当我从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];之后

没关系。但是我不知道为什么?

10-07 20:42