шаги, чтобы вызвать проблему - отредактируйте поле в CNContact, скажем, я редактирую электронную почту «email home». редактировать успешно работает
- (void)doUpdateField {
NSString * tempString = [[[self contentView] phoneField] text];
[self.navigationItem setRightBarButtonItem:self.loadingView];
[self.activityView startAnimating];
CNMutableContact * contactToUpdate = [self.incomingContact mutableCopy];
NSMutableArray * arrEmails = [self.incomingArray mutableCopy];
[arrEmails removeObjectAtIndex:self.incomingIndexPath.row];
CNLabeledValue * label = self.incomingArray[self.incomingIndexPath.row];
CNLabeledValue * emailValue = [CNLabeledValue labeledValueWithLabel:label.label value:tempString];
[arrEmails addObject:emailValue];
[contactToUpdate setEmailAddresses:arrEmails];
NSError *error;
CNSaveRequest *saveRequest = [[CNSaveRequest alloc] init];
[saveRequest updateContact:contactToUpdate];
BOOL success = [self.contactStore executeSaveRequest:saveRequest error:&error];
if (success) {
NSLog(@"success");
[self.navigationItem setRightBarButtonItem:self.normalButton];
[self.activityView stopAnimating];
} else {
NSLog(@"error %@", error);
[self.navigationItem setRightBarButtonItem:self.normalButton];
[self.activityView stopAnimating];
}
}
-i затем обновите контакт таким образом, чтобы отобрать информацию
CNContact * refreshedContact = [self.contactStore unifiedContactWithIdentifier:self.incomingContact.identifier keysToFetch:keys error:&error];
Затем я пытаюсь отредактировать другое поле в обновленном контакте, но получаю следующую ошибку:
Error Domain=CNErrorDomain Code=2 "(null)" UserInfo={CNKeyPaths=(
emailAddresses
)}
это не имеет абсолютно никакого смысла, я понятия не имею, почему я могу редактировать контакт только один раз. я не получаю эту ошибку, если я никогда не вызываю функцию для обновления контакта. если я не обновлю контакт, я могу продолжить обновление CNContact, как обычно. любая помощь будет принята с благодарностью