0

我已经习惯了 Kekiiwaa 的 ContactsManager ( https://github.com/Kekiiwaa/ContactsManager ),但我不知道如何添加多个电话的联系人。以下是使用一部手机添加联系人的示例代码:

[self.contactsManager addContactName: @"Tefany"
                          lastName: @"Jhonson"
                            phones: @[@{@"label":@"mobile",@"value":@"731782982"}]
                            emails: @[@{@"label":@"work",@"value":@"tefany@work.com"}]
                          birthday: nil completion:^(BOOL wasAdded) {

    NSLog(@"%i",wasAdded);

}];

那么如何添加多个电话的联系人?我尝试使用: @[@{@"label":@"mobile",@"value":@"999999999999”},@{@"label":@"mobile",@"value":@"999999999999"}]

但这行不通。

P/s:抱歉我的英语不好,谢谢你的帮助!

4

2 回答 2

0

我从 Github 下载了 repo,并尝试了下面的代码片段。

[self.contactsManager addContactName:@"Test"
                            lastName:@"Name"
                              phones:@[@{
                                           @"value":@"499034699748",
                                           @"label":@"Mobile"},
                                       @{
                                           @"value":@"349034699748",
                                           @"label":@"Home"
                                           }]
                              emails:@[@{
                                           @"value":@"mail@mail.com",
                                           @"label": @"home e-mail"
                                           }]
                            birthday:nil
                               image:nil
                          completion:^(BOOL wasAdded) {
                              NSLog(@"Contact was %@ added",wasAdded ? @"" : @"NOT");
                          }];

并且对于电话号码字典中的标签Work也可以使用。

于 2017-04-06T14:19:30.757 回答
0

哦,我刚做完。问题在这里:

[phonesList enumerateObjectsUsingBlock:^(NSDictionary *phone, NSUInteger idx, BOOL *stop) {
    ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
    ABMultiValueAddValueAndLabel(multiPhone, (__bridge CFTypeRef)(phone[@"value"]), (__bridge CFStringRef)(phone[@"label"]), NULL);
    ABRecordSetValue(record, kABPersonPhoneProperty, multiPhone, nil);
}];

该库使用 ARRAY phoneList 中的每个字典重新声明,因此电话是新创建的,而不是添加到现有联系人中。所以我想添加一个有多个电话号码的联系人,需要把多电话拿出来挡住。我已经完成了这个:

ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
[phonesList enumerateObjectsUsingBlock:^(NSDictionary *phone, NSUInteger idx, BOOL *stop) {
    ABMultiValueAddValueAndLabel(multiPhone, (__bridge CFTypeRef)(phone[@"value"]), (__bridge CFStringRef)(phone[@"label"]), NULL);
    ABRecordSetValue(record, kABPersonPhoneProperty, multiPhone, nil);
}];
于 2017-04-12T10:28:02.137 回答