我正在尝试删除地址簿中的联系人但我收到以下错误。
这是我的实施:
CNMutableContact *contact = [[cnContacts objectAtIndex:i] copy];
[cnContacts removeObjectAtIndex:i];
CNSaveRequest *request = [[CNSaveRequest alloc] init];
[request deleteContact:contact];
NSError *error;
if (![self.ContactStore executeSaveRequest:request error:&error]) {
if (error)
{
NSLog(@"error = %@", error.description);
}
}
在这一行:
if (![self.ContactStore executeSaveRequest:request error:&error]) {
我在控制台中收到此错误:
- [CNContact setSnapshot:]:无法识别的选择器发送到实例0x145de3940
此错误也显示出来:
Contacts`-[CNDataMapperContactStore executeSaveRequest:error:]:
libdispatch.dylib`_dispatch_mgr_thread:
你们中的任何人都知道这个错误的原因或我在实施中遇到的错误。
答案 0 :(得分:1)
我不知道这个API,但环顾四周我看到了:
[request deleteContact:contact];
需要一个CNMutableContact
对象,并且您已使用copy
使其不可变:
CNMutableContact *contact = [[cnContacts objectAtIndex:i] copy];
// contact is actually a CNContact object
你想要mutableCopy
,但我认为根本不需要创建副本,假设cnContacts
包含CNMutableContact
个实例,因为从数组中删除它不会破坏对象,因为你仍然在本地引用它。
我只能假设snapshot
是CNMutableContact
的私有财产,CNContact
上无法使用,因此无法识别的选择器异常(我什么也看不见)这个属性在类引用中。)