我一直在使用下面的代码几年,现在它一直工作,但它看起来像iOS 6它现在不再。如何获取iOS 6设备上的所有联系人列表?如何获取iOS 6中的用户联系人列表?
ABAddressBookRef myAddressBook = ABAddressBookCreate();
NSMutableArray *people = (__bridge_transfer NSMutableArray *)ABAddressBookCopyArrayOfAllPeople(myAddressBook);
CFRelease(myAddressBook);
// repeat through all contacts in the inital array we loaded
for(int i=0; i<[people count]; i++)
{
NSString *aName;
NSString *firstName = (__bridge_transfer NSString *)ABRecordCopyValue((__bridge ABRecordRef)([people objectAtIndex:i]), kABPersonFirstNameProperty);
NSString *lastName = (__bridge_transfer NSString *)ABRecordCopyValue((__bridge ABRecordRef)([people objectAtIndex:i]), kABPersonLastNameProperty);
if (([firstName isEqualToString:@""] || [firstName isEqualToString:@"(null)"] || firstName == nil) &&
([lastName isEqualToString:@""] || [lastName isEqualToString:@"(null)"] || lastName == nil))
{
// do nothing
}
else
{
aName = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
if ([firstName isEqualToString:@""] || [firstName isEqualToString:@"(null)"] || firstName == nil)
{
aName = [NSString stringWithFormat:@"%@", lastName];
}
if ([lastName isEqualToString:@""] || [lastName isEqualToString:@"(null)"] || lastName == nil)
{
aName = [NSString stringWithFormat:@"%@", firstName];
}
[self.tableItems addObject:aName];
}
}
[self.tableItems sortUsingSelector:@selector(compare:)];
我认为,代码将s直到工作,只要您授予您的应用程序的联系人权限... – samson
好吧,大概这是希望在其他最终用户设备的应用程序中使用,并迫使他们手动提供权限可能不会发生,除非他们得到提示它......所以请求它应该是iOS 6应用程序实现的一部分。 – foggzilla