Каркас контактов 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 по умолчанию, она сразу хорошо сохраняет контакт. Я могу проверить, что установлено на вашем устройстве, в Настройки -> Контакты -> Учетная запись по умолчанию.

Другие вопросы по тегам