0

我试图从通讯簿中获取前 100 个联系人。我所做的是获取所有联系人,然后尝试仅获取前 100 个。由于某种原因,这不起作用(代码如下)。

ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allContacts = ABAddressBookCopyArrayOfAllPeople(addressBook);

NSRange theRange;
theRange.location = 0;
theRange.length = 100;

CFArrayRef allContactsNew = (CFArrayRef)[(NSMutableArray *)allContacts subarrayWithRange:theRange];//This gets an error

非常感谢这里的帮助。此外,如果您知道任何其他方法可以直接从通讯簿中仅获取前 100 个左右,这可能会很有帮助。

4

1 回答 1

1

当我进行这些更改时,它工作正常:

theRange.length = MIN(100, CFArrayGetCount(allContacts)); //avoid array out of bounds errors

CFArrayRef allContactsNew = CFBridgingRetain([(NSArray *)CFBridgingRelease(allContacts) subarrayWithRange:theRange]); //Add CFBridging functions recommended by Xcode
于 2012-08-03T17:19:07.360 回答