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 に答える