Moja aplikacja ulega awarii, jest to problem, który powstaje z interfejsu API Książki adresowej, dzieje się tak tylko w przypadku niektórych kontaktów.Awaria książki adresowej, tylko z niektórymi kontaktami
Oto log:
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x00000102, 0x316ebd38
Crashed Thread: 0
Thread 0 Crashed:
0 CoreFoundation 0x00001cfe CFRetain + 90
1 AddressBook 0x00004b2c ABCMultiValueCopyValueAtIndex + 28
2 AddressBook 0x0001066a ABMultiValueCopyValueAtIndex + 2
3 Call Monitor 0x00003824 -[CallAppDelegate peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier:] (AppDelegate.m:408)
4 AddressBookUI 0x00032cfc -[ABPeoplePickerNavigationController personViewController:shouldPerformDefaultActionForPerson:property:identifier:withMemberCell:] + 152
5 AddressBookUI 0x0003b8ce -[ABPersonViewControllerHelper personTableViewDataSource:selectedPropertyAtIndex:inPropertyGroup:withMemberCell:forEditing:] + 222
6 AddressBookUI 0x0004a17c -[ABPersonTableViewDataSource valueAtIndex:selectedForPropertyGroup:withMemberCell:forEditing:] + 40
7 AddressBookUI 0x00048c00 -[ABPersonTableViewDataSource tableView:didSelectRowAtIndexPath:] + 316
8 UIKit 0x00091f40 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 656
9 UIKit 0x0009db40 -[UITableView _userSelectRowAtIndexPath:] + 124
10 Foundation 0x00086c86 __NSFireDelayedPerform + 362
11 CoreFoundation 0x00071a54 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 8
12 CoreFoundation 0x00073ede __CFRunLoopDoTimer + 854
13 CoreFoundation 0x0007485e __CFRunLoopRun + 1082
14 CoreFoundation 0x0001d8e4 CFRunLoopRunSpecific + 224
15 CoreFoundation 0x0001d7ec CFRunLoopRunInMode + 52
16 GraphicsServices 0x000036e8 GSEventRunModal + 108
17 GraphicsServices 0x00003794 GSEventRun + 56
18 UIKit 0x000062a0 -[UIApplication _run] + 396
19 UIKit 0x00004e10 UIApplicationMain + 664
20 Call Monitor 0x000028e8 main (main.m:14)
21 Call Monitor 0x000028b8 start + 32
To doprowadza mnie do szału, jak to się dzieje tylko z izolowanym liczby kontaktów.
Każda pomoc zostanie bardzo doceniona.
Oto kod, który został poproszony, dziękuję bardzo za pomoc:
(Jest to wyciąg z metody gdzie myślę, że błąd zdarza)
Najdziwniejsze jest to, że to dzieje się tak tylko z pewnych kontaktów i usuwanie kontaktu, a następnie utworzenie nowego rozwiązuje problem ...
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
NSString* firstName = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString* lastName = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
NSNumber* record = [NSNumber numberWithInt:ABRecordGetRecordID(person)];
if(lastName!=nil){
name=[NSString stringWithFormat:@"%@ %@",firstName,lastName];
}
else {
name=firstName;
}
ABMultiValueRef phone = ABRecordCopyValue(person, property);
NSString *value =(NSString *)ABMultiValueCopyValueAtIndex(phone, identifier);
NSString *label =(NSString *)ABMultiValueCopyLabelAtIndex(phone, identifier);
NSMutableArray *tempArray=[[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"MainArray"]];
NSDictionary *stringDictionary = [NSDictionary dictionaryWithObjectsAndKeys:name, kLabelKey, value, kNumberKey,label, kNumberLabelKey,record, kReferenceKey, nil];
[tempArray addObject:stringDictionary];
NSArray *mainArray = [NSArray arrayWithArray:tempArray];
[[NSUserDefaults standardUserDefaults] setObject:mainArray forKey:@"MainArray"];
Co jest wejście utworzenie katastrofę? Czy zdarza się to zawsze w przypadku konkretnego kontaktu? Co to jest komunikat o błędzie? – vodkhang
Włączenie kodu z '- [CallAppDelegate peoplePickerNavigationController: shouldContinueAfterSelectingPerson: property: identifier:]' byłoby bardzo pomocne, szczególnie kod wokół linii 408 AppDelegate.m. –
Dołączyłem kod, w którym wydaje mi się, że wystąpił błąd, czy wskazane byłoby zawinięcie całego wyciągu za pomocą @catch @catch? – Zebs