我正在尝试仅从通讯录中获取前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个左右,则可能会很有帮助。

最佳答案

当我进行以下更改时,它可以正常工作:

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

07-26 09:42