【问题标题】:How to add a contact with multiple phone value by ContactsManager(Kekiiwaa)如何通过 ContactsManager(Kekiiwaa) 添加具有多个电话值的联系人
【发布时间】:2017-04-05 11:02:17
【问题描述】:

我用过 Kekiiwaa (https://github.com/Kekiiwaa/ContactsManager) 的 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:对不起,我的英语不好,谢谢你的帮助!

【问题讨论】:

  • 尝试将第二个键 label 的值设置为 @"work"。还将键 value 的值设置为 10 位数字(如标准手机号码)。
  • 正如我所见,ContactsManager 是一个旧库并使用 AddressBook 框架。如果您面向 iOS 9 或更高版本,Apple 建议使用 ContactsFramework。 To work with the user’s contact information in apps that target iOS 9 and later, it’s recommended that you use the APIs defined in the Contacts and ContactsUI frameworks.Apple Contacts Framework
  • 哦,我明白了。这个应用程序使用地址簿框架,我只是维护它。我在使用多个电话添加联系人时遇到问题。我将在下一个项目中尝试 Apple Contacts Framework。但是你能帮我解决我的问题吗?

标签: ios objective-c ios-contacts


【解决方案1】:

我从 Github 下载了 repo 并尝试了下面的代码 sn-p 比它有效。

[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 也可以。

【讨论】:

    【解决方案2】:

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

    [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);
    }];
    

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 2017-12-07
      • 2012-06-17
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多