шагов, чтобы вызвать проблему - отредактируйте поле в CNContact, так что давайте предположим, что я редактирую электронное письмо "домой по электронной почте".редактирование работает успешно
- (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];
-i, затем попробуйте отредактировать другое поле в refreshedContact, но я получаю следующееошибка:
Error Domain=CNErrorDomain Code=2 "(null)" UserInfo={CNKeyPaths=(
emailAddresses
)}
это абсолютно бессмысленно, я понятия не имею, почему я могу редактировать контакт только один раз.я не получаю эту ошибку, если я никогда не позвоню функции, чтобы обновить контакт.если я не обновляю контакт, я могу продолжить обновление CNContact, как обычно.любая помощь будет принята с благодарностью