当我从iPhone通讯录中删除联系人时,它崩溃了。
下面的代码,
CNContactStore * contactStore = [[CNContactStore alloc] init];
CNContactFetchRequest * contactRequest = [[CNContactFetchRequest alloc] initWithKeysToFetch:[self contactKeys]];
[contactStore enumerateContactsWithFetchRequest:contactRequest error:&err usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {
if([contact.familyName isEqualToString:contactItem.familyName] &&
[contact.middleName isEqualToString:contactItem.middleName] &&
[contact.givenName isEqualToString:contactItem.givenName]) {
CNLabeledValue<CNPhoneNumber*>* number1 = [contact.phoneNumbers firstObject];
CNPhoneNumber *phone = number1.value;
NSString *number2 = [contactItem.phoneNumbers firstObject];
if ([phone.stringValue isEqualToString:number2]) {
CNSaveRequest *deleteRequest = [[CNSaveRequest alloc] init];
[deleteRequest deleteContact:(CNMutableContact *)contact];
CNContactStore *deletestore = [[CNContactStore alloc] init];
[deletestore executeSaveRequest:deleteRequest error:nil];
*stop = YES;
}
}
}];
当线程在这里运行时,
[deletestore executeSaveRequest:deleteRequest error:nil];
崩溃了!我真的不明白代码有什么问题〜这是一个简单的代码段。
任何帮助表示赞赏!
最佳答案
好的,到目前为止,没有人回答我的问题。
我自己解决了。
我从通讯录中找到所有人员,然后迭代该人员。
解决方案是:
原始代码[deleteRequest deleteContact:(CNMutableContact *)contact];
更改代码[deleteRequest deleteContact:(CNMutableContact *)contact mutableCopy];
之后
没关系。但是我不知道为什么?