Каркас контактов IOS9 не может обновить связанный контакт
В AddressBook на устройстве у меня есть запись, связанная с записью контактов Facebook. Я извлекаю его в CNContact с помощью CNContactFetchRequest с помощью:
contactFetchRequest.mutableObjects = true
contactFetchRequest.unifyResults = false
После получения я изменяю его, затем пытаюсь обновить его:
let store = CNContactStore()
let saveRequest = CNSaveRequest()
if contact != nil {
mutableContact = contact!.mutableCopy() as! CNMutableContact
saveRequest.updateContact( mutableContact )
} else {
mutableContact = CNMutableContact()
saveRequest.addContact( mutableContact, toContainerWithIdentifier:nil )
}
// Modify mutableContact
mutableContact.jobTitle = "Worker";
do {
// Will fails with error
try store.executeSaveRequest(saveRequest)
} catch let error as NSError {
BCRLog(error)
self.isFailed = true
} catch {
self.isFailed = true
}
При выполнении executeSaveRequest я обнаружил ошибку:
Ошибка NSE с доменом:CNErrorDomain, код:500 (ведь это CNErrorCodePolicyViolation), _userInfo: {"NSUnderlyingError": {"ABAddressBookErrorDomain" - код 0}}, который является kABOperationNotPermittedByStoreError
Вопрос: можно ли изменить связанный контакт (не унифицированный), и если это так, что я делаю не так?
Если я модифицирую несвязанный контакт - все ок!
0 ответов
У меня эта ошибка возникает, когда приложение "Контакты" настроено для хранения контактов в учетной записи Exchange. Когда я выбираю учетную запись iCloud по умолчанию, она сразу хорошо сохраняет контакт. Я могу проверить, что установлено на вашем устройстве, в Настройки -> Контакты -> Учетная запись по умолчанию.