Получить все контакты и все ключи с помощью новой Contact Framework

ios swift xcode8 contact

1367 просмотра

1 ответ

683 Репутация автора

Я хочу получить все контакты без фильтра и всю информацию об их ключах.

func unifiedContactsMatchingPredicate(_ predicate: NSPredicate,
                          keysToFetch keys: [CNKeyDescriptor]) throws -> [CNContact]

Я использую вышеуказанный метод для получения контакта.

я должен указать все ключи? Есть ли какой-нибудь ярлык для извлечения всей информации о ключах без указания их всех?

Автор: Surjeet Rajput Источник Размещён: 19.07.2016 06:01

Ответы (1)


0 плюса

1490 Репутация автора

Нет. Вам нужно будет указать все необходимые ключи самостоятельно. Пожалуйста, посмотрите на документацию Apple здесь ** РЕДАКТИРОВАТЬ: ** Пожалуйста, попробуйте этот метод:

-(void)getAllContacts
{
    //keys with fetching properties
    NSArray *keys = @[CNContactFamilyNameKey, CNContactGivenNameKey, CNContactPhoneNumbersKey, CNContactImageDataKey];
    NSString *containerId = store.defaultContainerIdentifier;
  //to fetch all contacts
    NSPredicate *predicate = [CNContact predicateForContactsInContainerWithIdentifier:containerId];

    //to fetch contacts with matching name
//    NSPredicate *predicate = [CNContact predicateForContactsMatchingName:@"vishal"];
    NSError *error;
    NSArray *cnContacts = [store unifiedContactsMatchingPredicate:predicate keysToFetch:keys error:&error];
    if (error) {
        NSLog(@"error fetching contacts %@", error);
    } else {
        for (CNContact *contact in cnContacts) {
            // copy data to my custom Contacts class.
            Contact *newContact = [[Contact alloc] init];
            newContact.firstName = contact.givenName;
            newContact.lastName = contact.familyName;
            UIImage *image = [UIImage imageWithData:contact.imageData];
            newContact.image = image;
            for (CNLabeledValue *label in contact.phoneNumbers) {
                NSString *phone = [label.value stringValue];
                if ([phone length] > 0) {
                    [newContact.phones addObject:phone];
                }
            }
            [contacts addObject:newContact];
        }
    }
}
Автор: Vishal Sonawane Размещён: 19.07.2016 06:10
Вопросы из категории :
32x32