2016-06-16 1 views
0

Он разбился, когда я удалил контакт из контактов iPhone. ниже код,Причина: '- [CNContact setSnapshot:]: непризнанный селектор, отправленный в экземпляр 0x7fc84c8491c0'

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];, который получил разбитый! Я действительно не понимаю, что не так с кодом ~ Это простой фрагмент. Любая помощь приветствуется!

ответ

1

Хорошо, до сих пор, никто не отвечает на мой вопрос. Я решил это сам. Я получаю все от контактов, а затем перебираю человека. Решение: исходный код [deleteRequest deleteContact:(CNMutableContact *)contact]; после измененного кода [deleteRequest deleteContact:(CNMutableContact *)contact mutableCopy];

Это нормально. Но я не знаю почему?