在我的应用程序中,我希望用户选择一个带有peoplePicker的联系人。然后,我想将记录ID存储在NSArray中,因此我必须将其转换为NSNumber。但是,当将NSNumber添加到数组时,它不是。没有错误,但是当我查看调试器中的对象时,看到NSNumber personId具有正确的值,但是数组personAdd不包含它。

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
      shouldContinueAfterSelectingPerson:(ABRecordRef)person {
    NSNumber *personId = [NSNumber numberWithInt:ABRecordGetRecordID(person)];
    NSString *first = (NSString *)ABRecordCopyValue(person,kABPersonFirstNameProperty);
    NSString *last = (NSString *)ABRecordCopyValue(person,kABPersonLastNameProperty);
    NSArray *personAdd = [NSArray arrayWithObjects:first, last, personId, nil];

    [self.myContactDataSource addPerson:personAdd]; //further usage of the data

    [self.tableView reloadData];                            //reload table view and
    [peoplePicker dismissModalViewControllerAnimated:YES];  //dismiss people picker
    return NO; //tell peoplepicker not to display the contact details
}

谁能告诉我该如何解决?

最佳答案

好的,假设first,last和personId都不为nil。 。 。

您说它在调试器中看起来不对-您是什么意思?

如果执行此操作会发生什么-是否可以将控制台复制到您的问题中:

// Debug the person id
NSLog(@"%i", [personId intValue]);

// Check that it's in the array OK
NSLog(@"%i", [personAdd objectAtIndex:2]);

// Add it to your stuff
[self.myContactDataSource addPerson:personAdd];

// Check that the array is still OK
NSLog(@"%i", [[myContactDataSource objectAtIndex:2] intValue]);

我知道这不是一个完整的答案,但可能可以进一步阐明问题!

关于objective-c - NSArray不接受NSNumber,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5058169/

10-13 05:05