2

すべてのアドレス帳の連絡先をループするときに、レコードが Facebook のみのレコードかどうかを確認する方法はありますか? それは、iOS 設定で Facebook を追加するときに挿入されるアドレス帳レコードです。

これらのレコードをスキップして、ユーザーが入力したレコードまたは他のソースから同期されたレコードのみを見ようとしています。

ありがとうございました

4

4 に答える 4

0

新しいバージョン (メモリ リックなし):

+ (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; }
于 2016-08-30T10:43:04.727 に答える
0

すべてのABPersonレコードは、正確に 1 つの に属しABSourceます。

すべての person レコードを反復処理するときは、ABPersonCopySource(person)それぞれを呼び出します。Facebook レコードはすべて、特定のソース レコードに関連付ける必要があります。識別方法がわかりません。おそらく、kABSourceNamePropertyそのソース レコードの に「Facebook」が含まれている可能性があります。

于 2013-04-23T03:07:43.140 に答える