获取地址簿的子数组
我试图从地址簿中获取第一个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
完美的作品,应该提到的一点是,这一行发布“allContacts”。 谢谢! – Idan 2012-08-03 21:26:38
我不得不说,我不熟悉CFBridgingRetain/CFBridgingRelease的东西。我只是把它们放进去,因为程序不会另外编译,而Xcode的修复程序会将它们放入我的系统中。那可能是因为我有ARC,而你没有。如果你的问题是数组边界问题,你应该决定是否CFBridgingRetain/CFBridgingRelease语句适合你。 – SSteve 2012-08-03 22:45:29
界限不是问题。不管怎样,谢谢。 – Idan 2012-08-04 02:06:00
有什么错误? – 2012-08-03 16:44:37
某些运行时错误。无论如何SSteve解决这个问题。谢谢! – Idan 2012-08-03 21:27:31