AddressBook でいくつかのテストを行っています。探しているデータを取得できますが、それがどのように配信されるのか気になります。具体的には CFDictionaryRef です。これを NSDictionary にキャストしてコンソールにログを記録すると、キー = 値のペアではなく、文字列値が取得されます。allKeys をログに記録しようとすると、テスト アプリが壊れます。
私が使用しているコードスニペットは次のとおりです。
if ([contactName isEqualToString:ownerName]) {
//get reference to their email addresses
ABMultiValueRef contactEmails = ABRecordCopyValue(thisPerson, kABPersonEmailProperty);
//loop
for (NSUInteger e = 0; e < ABMultiValueGetCount(contactEmails); e++){
CFDictionaryRef thisPersonCFEmailDict = ABMultiValueCopyValueAtIndex(contactEmails, e);
NSDictionary* thisPersonEmailDict = (__bridge NSDictionary*)thisPersonCFEmailDict;
NSLog(@"%@", [thisPersonEmailDict allKeys]);
}
}