2016-02-10 3 views
6

Я использую структуру контактов в приложении. вещь, которую я пытаюсь сделать, - это классифицировать все контакты по их контейнерам. например facebook контакты будут под заголовком «Facebook», google контакты под «Google». Но когда я печатаю имена контейнеров несколько раз, он приходит пустым или пустым или что-то неопределенное, например «Адресная книга». Есть ли способ узнать, какой контейнер принадлежит учетной записи (local, facebook, google и т. Д.). Заранее спасибо.Как получить имя контейнера с помощью Contacts Framework (iOS9)

CNContactStore *contactStore = [[CNContactStore alloc]init]; 
    NSArray *keysToFetch = @[CNContactGivenNameKey,CNContactFamilyNameKey,CNContactIdentifierKey,CNContactMiddleNameKey,CNContactPhoneNumbersKey]; 
    NSError *error; 
    NSArray *containers = [contactStore containersMatchingPredicate:nil error:&error]; 
    for (CNContainer *container in containers) { 
     NSLog(@"Container: %@",container.name); 
    } 
+0

Заинтересованы, если у вас были какие-либо успехи в этом вопросе? – simonthumper

+0

нет. У меня пока нет. – Rezwan

ответ

-1

инициализацией массива работал для меня:

NSArray * контейнеры = [[NSArray Alloc] инициализации];

1

Я потратил 2 дня на эту проблему, но не получил никакого решения.

Затем сделайте это одним патчем. Это сработало для меня.

if ([container.name isEqualToString:@"Card"]) { 
        NSLog(@"iCloud"); 
       }else if ([container.name isEqualToString:@"Address Book"]){ 
        NSLog(@"google"); 
       }else if ([container.name isEqualToString:@"Contacts"]){ 
        NSLog(@"Yahoo"); 
       }else{ 
        NSLog(@"Other"); 
       } 
1

отладчик показывает, что CNContainer имеет элемент с именем accountIdentifier, но всегда, кажется пустым. Мне интересно, связано ли это с некоторым API Apple-private, который использует Contacts.app для получения имен учетных записей для использования в качестве ярлыков контейнеров. То есть, по какой-то причине не кажется, что Apple хочет, чтобы у нас была эта информация. Возможно, это более полезно для контейнеров Exchange, где имя контейнера функционирует как имя группы.

Смежные вопросы