2016-02-10 8 views
6

Używam aplikacji Kontakty w aplikacji. rzeczą, którą próbuję zrobić, jest kategoryzowanie wszystkich kontaktów za pomocą ich kontenerów. na przykład kontakty facebook będą pod tytułem "Facebook", google kontakty w "Google". Ale kiedy wypisuję nazwy kontenerów, czasami pojawia się pusta lub pusta lub coś niejasnego, jak "Książka adresowa". Czy istnieje sposób, aby dowiedzieć się, który kontener należy do którego konta (lokalne, Facebook, Google itp.). Z góry dziękuję.Jak uzyskać nazwę kontenera za pomocą aplikacji Kontakty (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

Interesuje Cię, jeśli masz jakieś postępy w tej sprawie? – simonthumper

+0

Nie, nie do tej pory. – Rezwan

Odpowiedz

-1

inicjujących tablica pracował mnie

NSArray * pojemniki = [[NSArray Alloc] startowych];

1

Spędziłem 2 dni na ten problem, ale nie otrzymałem żadnego rozwiązania.

Następnie zrobić to za pomocą jednej poprawki. To działa dla mnie.

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

Debugger pokazuje, że CNContainer ma element o nazwie accountIdentifier, ale zawsze wydaje się mieć wartość null. Zastanawiam się, czy jest on powiązany z jakimś prywatnym interfejsem API firmy Apple, używanym przez aplikację Contacts.app do uzyskiwania nazw kont używanych jako etykiety kontenera. Co oznacza, że ​​z jakiegoś powodu nie wydaje się, że Apple chce, abyśmy mieli te informacje. Może jest bardziej przydatny dla kont Exchange, gdzie nazwa kontenera działa jako nazwa grupy.