Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 更改ABRecordRef属性_Iphone_Ios_Objective C_Ipad - Fatal编程技术网

Iphone 更改ABRecordRef属性

Iphone 更改ABRecordRef属性,iphone,ios,objective-c,ipad,Iphone,Ios,Objective C,Ipad,我有以下cpde: ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(self.recordRef_)); CFErrorRef error = NULL; if ([self.nameTextField_.text isNotNull]){ NSArray *nameStringArray = [self.nameTextField_.

我有以下cpde:

ABRecordRef person = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(self.recordRef_));

 CFErrorRef  error = NULL;

    if ([self.nameTextField_.text isNotNull]){
        NSArray *nameStringArray = [self.nameTextField_.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        ABRecordSetValue(person, kABPersonFirstNameProperty, (__bridge CFTypeRef)([nameStringArray objectAtIndex:0]), NULL);
        if ([nameStringArray count] > 1){
            ABRecordSetValue(person, kABPersonLastNameProperty, (__bridge CFTypeRef)([nameStringArray lastObject]), &error);
        }
    }
但是,在此代码之后,它给出了以下错误:

Error Domain=ABAddressBookErrorDomain Code=0 "The operation couldn’t be completed. (ABAddressBookErrorDomain error 0.)"

知道这是为什么吗?

错误消息似乎毫无用处,但由于您的其余代码看起来有效,我猜测您的应用程序尚未获得用户访问通讯簿数据库的授权。在尝试访问通讯录之前,请使用以下代码检查您的授权状态:

if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
    // We're good to go
} else {
    // Hasn't been authorized by the user
    // You can check the exact authorization status for more information on the
    // exact reason why you can't access the Address Book (e.g. denied, restricted, etc.)
}

当您使用的联系人后端不处理您试图添加到联系人的字段时,就会发生这种情况。在您的情况下,我怀疑您的后端根本不处理写操作。。这真是令人惊讶

请参阅有关此主题的Apple文档:

enum {
   kABOperationNotPermittedByStoreError = 0,
   kABOperationNotPermittedByUserError 
};
kABOperationNotPermittedByStoreError

通讯簿数据库不允许此操作,因为联系人的源不支持此操作

在iOS 2.0及更高版本中提供

KAB操作不允许DbyUserError

不允许该操作,因为用户拒绝访问通讯簿数据库

在iOS 6.0及更高版本中提供