Al momento sono davvero in difficoltà con ABAddressBookGetPersonWithRecordID. Sto salvando un ID e poi provando a richiamarlo di nuovo. Attualmente sto facendo qualcosa di semplice per testare il collegamento, ma non funziona.rubrica iphone - recupero di oggetti null in ABAddressBookGetPersonWithRecordID
In primo luogo, posso leggere gli oggetti dal mio indirizzo di iphone simulatore libro utilizzando:
-(BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
NSString *contactName;
NSString *contactCompany;
NSString *contactFirst;
NSString *contactLast;
contactFirst = [(NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty) stringByAppendingString:@" "];
contactLast = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
contactName = [contactFirst stringByAppendingString:contactLast];
contactCompany = (NSString *)ABRecordCopyValue(person, kABPersonOrganizationProperty);
NSNumber *recordId = [NSNumber numberWithInteger: ABRecordGetRecordID(person)];
NSLog(@"record id is %d", recordId);
NSLog(@"Person Reference: %d", person);
NSLog(@"Name: %@", contactName);
NSLog(@"Company: %@", contactCompany);
che ha la NSLog:
2010-01-26 11:52:31.396 SQL[19786:207] record id is 69283952
2010-01-26 11:52:31.397 SQL[19786:207] Person Reference: 69495792
2010-01-26 11:52:31.398 SQL[19786:207] Name: John Adams
2010-01-26 11:52:31.398 SQL[19786:207] Company: (null)
Quindi la mia presunzione è che tutte le opere in tal senso. Il problema sta utilizzando l''ID record' 69283952, per richiamare il backup di queste informazioni di contatto. Attualmente sto cercando di fare in questo modo:
-(UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)newindexPath {
ABAddressBookRef ab = ABAddressBookCreate();
ABPersonViewController *pvc = [[ABPersonViewController alloc] init];
ABRecordRef person = ABAddressBookGetPersonWithRecordID(ab,69283952);
NSLog(@"person - %d", person);
pvc.displayedPerson = person;
NSLog(@"pvc.displayedPerson - %d", pvc.displayedPerson);
pvc.addressBook = ab;
pvc.allowsEditing = YES;
pvc.personViewDelegate = self;
[[self navigationController] pushViewController:pvc animated:YES];
[pvc release];
che ha la NSLog
2010-01-26 11:58:19.393 SQL[19849:207] Looking Up Contact Now
2010-01-26 11:58:19.399 SQL[19849:207] person - 0
2010-01-26 11:58:19.400 SQL[19849:207] pvc.displayedPerson - 0
E così tutto quello che ottiene è una persona nullo. Che cosa sto facendo di sbagliato? Non ne ho assolutamente idea!
saluti, @norskben
interessante, quindi la recordId è un numero relativamente piccolo (ottengo 2), e niente come il vecchio 67238032. E ci vai, che piccola soluzione !!! grazie mille gerry3 – oberbaum
Sì, 69283952 era il valore del puntatore (indirizzo di memoria) del tuo oggetto NSNumber. – gerry3
hmmm ... questi puntatori continuano a ingannarmi. – oberbaum