アドレス帳の連絡先を読んでいます...名前のない連絡先をテストするまで、すべてがうまくいきます(メールや電話などで連絡先を作成できるため....)。コード(縮小)は次のとおりです。
- (NSMutableArray *) getContactsInfo {
NSMutableArray *contactsList = [[NSMutableArray alloc] init];
localAddressBook = ABAddressBookCreate();
int contactsLength = (int)ABAddressBookGetPersonCount(localAddressBook);
if (contactsLength < 1)
return nil;
for(int currentContact=1; currentContact < (contactsLength + 1); currentContact++) {
ABRecordRef person = ABAddressBookGetPersonWithRecordID(localAddressBook,(ABRecordID) currentContact);
firstName = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSLog(@"%@", firstName);
[contactsList addObject:firstName];
CFRelease(person);
}
return contactsList;
}
そして、私が得る出力はこれです:
2010-02-15 14:16:25.616 testApp[7065:207] Contact0
2010-02-15 14:16:25.618 testApp[7065:207] Contact1
2010-02-15 14:16:25.619 testApp[7065:207] Contact2
Program received signal: “EXC_BAD_ACCESS”.
名前と姓の連絡先が 3 つあり、テスト目的で姓だけで作成された連絡先が 1 つあります。
配列を使用してメールや住所などのプロパティを適切に読み取ることができるようですが、連絡先に First Name プロパティがない場合、アプリがクラッシュします。