iOS9-CNContactFetchRequestAPI翻译

Introduction:

这个类为获取通讯录定义了一些选项。必须通过通讯录属性的key来获取通讯录的各个属性。使用enumerateContactsWithFetchRequest:error:usingBlock: 这个方法来执行获取通讯录的请求。

Contact Fetching Options获取通讯录的选项

1)mutableObjects

bool值表示是否返回一个可变的通讯录
@property(nonatomic) BOOL mutableObjects

Discussion

当返回yes,则返回CNMutableContact对象,否则返回CNContact 对象。默认返回NO。

2)unifyResults

bool值表示将返回一个统一标准的通讯录
@property(nonatomic) BOOL unifyResults

Discussion

统一标准的通讯录的意思是:来自个人通讯录的属性的集合。如果返回yes,将返回一个统一标准的通讯录,否则的话将返回个人的通讯录。默认返回YES.

3)sortOrder

通讯录的排序方式
@property(nonatomic) CNContactSortOrder sortOrder

Discussion

默认排序方式CNContactSortOrderNone.

Keys Used in Fetching Contacts用来获取通讯录的key

1)- initWithKeysToFetch:

Designated Initializer
指定的通过特定的key来初始化的方法

参数

  • keysToFetch
  • 用来查找通讯录的属于通讯录属性的key或者key descriptors

返回值

返回CNContactFetchRequest 初始化好的实例

Discussion

是CNContactFetchRequest这个类的初始化方法,使用init初始化将会报错。

2)keysToFetch

要想查找的通讯录的属性
@property(copy, nonatomic) NSArray > ahiysToFetch

Discussion

用来查找的通讯录属性里面的属性key或者key descriptors的数组。例如,CNContactEmailAddressesKey, CNContactPhoneNumbersKey, CNContactFormatterStyleFullName 就是查找通讯录的电子邮件,电话号码,全名。

3)predicate

用来匹配通讯录的谓词
@property(copy, nonatomic) NSPredicate *predicate

Discussion

设置这个属性为nil将匹配所有的通讯录或者使用 CNContact 类中的谓词,不支持合成的谓词。

下面上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CNContactStore *store = [[CNContactStore alloc] init];
//获取访问通讯录权限
[store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {//同意访问
//创建获取通讯录的请求,根据通讯录提供的key
CNContactFetchRequest *fetchRequest = [[CNContactFetchRequest alloc] initWithKeysToFetch:@[CNContactPhoneNumbersKey,CNContactFamilyNameKey,CNContactGivenNameKey]];
//设置断言为nil表示获取到所有的通讯录
fetchRequest.predicate = nil;
//执行请求
[store enumerateContactsWithFetchRequest:fetchRequest error:nil usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {
CNPhoneNumber *phoneNum = [contact.phoneNumbers firstObject].value;
NSLog(@"电话号码 %@",phoneNum.stringValue);
NSLog(@"名字 %@%@",contact.familyName,contact.givenName);
}];
}else{
}
}];