我有以下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.)"知道为什么会这样吗?
发布于 2013-02-11 08:38:34
错误消息似乎没有什么用处,但是由于您的其余代码看起来是有效的,我猜测您的应用程序没有被用户授权访问Address Book数据库。在尝试访问地址簿之前,请使用如下代码检查您的授权状态:
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.)
}发布于 2016-03-07 17:35:23
当您使用的联系人后端不能处理您试图添加到联系人中的字段时,就会发生这种情况。在您的情况下,我怀疑您的后端根本不处理写操作。这真是令人惊讶。
请参阅有关此主题的Apple文档:
enum {
kABOperationNotPermittedByStoreError = 0,
kABOperationNotPermittedByUserError
};kABOperationNotPermittedByStoreError
通讯簿数据库不允许该操作,因为联系人的源不支持该操作。
在iOS 2.0及更高版本中可用。
kABOperationNotPermittedByUserError
不允许该操作,因为用户拒绝访问通讯簿数据库。
在iOS 6.0及更高版本中可用。
https://stackoverflow.com/questions/14804279
复制相似问题