iPhone:将联系人添加到不在设备上工作但在 ABAddressbook 中的模拟器上工作的组

标签 iphone ios abaddressbook

将联系人添加到不在设备上工作但在 ABAddressbook 中的模拟器上工作的组 没有给出错误,但联系人未反射(reflect)在联系人的特定组中 但在模拟器上运行良好

我正在使用此代码

if (person) {
           ABAddressBookAddRecord(addressBook, person, nil);

           ABAddressBookSave(addressBook, &error);

           BOOL isADDED = ABGroupAddMember(groupNameRef, person, &error);

           NSError *error1 = (__bridge_transfer NSError *)error;

           NSLog(@"Reason = %@", error1.localizedFailureReason);
           BOOL iSSaved = ABAddressBookSave(addressBook, &error);
}

在模拟器上工作正常,但在设备上不工作

最佳答案

它将帮助您开始正确使用错误检查。以下是错误检查例程的结构:

if (person) {
    bool ok;
    CFErrorRef err = nil;
    ok = ABAddressBookAddRecord(addressBook, person, &err);
    if (!ok) {
        NSLog(@"%@", err);
        return;
    }
    ok = ABAddressBookSave(addressBook, &err);
    if (!ok) {
        NSLog(@"%@", err);
        return;
    }
    ok = ABGroupAddMember(groupNameRef, person, &err);
    if (!ok) {
        NSLog(@"%@", err);
        return;
    }
    ok = ABAddressBookSave(addressBook, &err);
    if (!ok) {
        NSLog(@"%@", err);
        return;
    }
}

注意这里的模式。该函数返回一个 bool 值。你检查一下那个 bool 值。如果为 false,则检查间接返回的错误。如果您正确遵循此模式,您将获得有关问题所在的更好信息。

编辑:确保您确实有权访问联系人数据库。我假设您这样做,但模拟器和设备之间的主要区别在于模拟器会自动授予访问权限,而在设备上必须向用户显示访问请求对话框(调用ABAddressBookRequestAccessWithCompletion)否则将无法访问,并且使用联系人数据库的尝试将会失败,甚至可能会默默失败。

关于iPhone:将联系人添加到不在设备上工作但在 ABAddressbook 中的模拟器上工作的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16568304/

相关文章:

android - 即使在 Flutter 中定义了 errorBuilder,Image.network 也会抛出错误

ios - ABAddressBookGetPersonWithRecordID 使我的应用程序崩溃

iphone - iPhone 上的 PDF 搜索

iphone - iOS6 CALayer 释放/卸载 ScrollView 中滚动不可见的 View

iphone - NSURLConnection didFailWithError connectionDidFinishLoading 同时调用?

ios - UICollectionView 在 scrollToItemAtIndexPath 之后水平滚动 :

ios - 在屏幕外重绘 View - 包含选择器 View 和工具栏

iOS - 如何使用 ABSourceType 搜索 "searchable"ABSource | kABSourceTypeSearchableMask

objective-c - 地址簿联系人是否有 "uniqueID"类型的属性?

iPhone/iPad SimpleTableViewCells : What replaces the deprecated setImage setText on table cells?