【问题标题】:How to load all contacts in an array ios9如何加载数组中的所有联系人ios9
【发布时间】:2015-10-26 12:32:10
【问题描述】:

AddressBook api 在 ios 9 中已弃用。我想加载数组中的所有联系人并将其显示在 UITableView 中。我不想使用 iOS 默认 ContactPicker,因为我必须在显示时进行一些自定义。如何将所有联系人列表加载到数组中以供进一步使用?

【问题讨论】:

    标签: uitableview ios9 cncontact cncontactstore cncontactformatter


    【解决方案1】:

    首先我必须检查未定义的权限 ID,然后请求访问联系人的权限。像这样:

    CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
    
    if (status == CNAuthorizationStatusNotDetermined) {
        [self.contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError *error) {
    
            if (granted) {
                [self loadUserListFromPhoneBook];
            }
        }];
    }
    else if(status == CNAuthorizationStatusAuthorized) {
        [self loadUserListFromPhoneBook];
    }
    

    之后我不得不遍历联系人列表并像这样加载所有联系人:

    -(void) loadUserListFromPhoneBookFor
    {
        NSMutableArray *contacts = [NSMutableArray array];
        NSError *error;
        CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:@[CNContactIdentifierKey, [CNContactFormatter descriptorForRequiredKeysForStyle:CNContactFormatterStyleFullName]]];
    
        BOOL success = [self.contactStore enumerateContactsWithFetchRequest:request error:&error usingBlock:^(CNContact *contact, BOOL *stop) {
            [contacts addObject:contact];
        }];
        if (!success) {
            NSLog(@"error = %@", error);
        }
    
        CNContactFormatter *formatter = [[CNContactFormatter alloc] init];
    
        for (CNContact *contact in contacts) {
            NSString *string = [formatter stringFromContact:contact];
            NSLog(@"contact = %@", string);
        }
    }
    

    您可以使用必要的密钥来获取更多信息。有一个look at this 了解更多信息。它具有所有新的联系类别。 This video of WWDC 帮了大忙。

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 2012-06-06
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      相关资源
      最近更新 更多