我正在尝试仅从通讯录中获取前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