すべてのアドレス帳の連絡先をループするときに、レコードが Facebook のみのレコードかどうかを確認する方法はありますか? それは、iOS 設定で Facebook を追加するときに挿入されるアドレス帳レコードです。
これらのレコードをスキップして、ユーザーが入力したレコードまたは他のソースから同期されたレコードのみを見ようとしています。
ありがとうございました
新しいバージョン (メモリ リックなし):
+ (BOOL)isPersonFacebookContact:(ABRecordRef)person {
ABMultiValueRef instantMessage = ABRecordCopyValue(person, kABPersonInstantMessageProperty);
BOOL returnValue = NO;
if (instantMessage) {
for (NSInteger i = 0; i < ABMultiValueGetCount(instantMessage); i++) {
CFDictionaryRef instantMessageValue = ABMultiValueCopyValueAtIndex(instantMessage, i);
CFStringRef instantMessageString = CFDictionaryGetValue(instantMessageValue, kABPersonInstantMessageServiceKey);
if (instantMessageString) {
if (CFStringCompare(instantMessageString, kABPersonInstantMessageServiceFacebook, 0) == kCFCompareEqualTo) {
returnValue = YES;
}
}
CFRelease(instantMessageValue);
}
CFRelease(instantMessage);
}
return returnValue; }
すべてのABPerson
レコードは、正確に 1 つの に属しABSource
ます。
すべての person レコードを反復処理するときは、ABPersonCopySource(person)
それぞれを呼び出します。Facebook レコードはすべて、特定のソース レコードに関連付ける必要があります。識別方法がわかりません。おそらく、kABSourceNameProperty
そのソース レコードの に「Facebook」が含まれている可能性があります。