デバイスの AddressBook には、Facebook の連絡先レコードにリンクされたレコードがあります。CNContactFetchRequest を使用して CNContact にフェッチします。
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 を実行すると、エラーが発生しました。
ドメインの NSError:CNErrorDomain、コード:500 (魔女は CNErrorCodePolicyViolation)、_userInfo: {"NSUnderlyingError" : {"ABAddressBookErrorDomain" - コード 0}} 魔女は kABOperationNotPermittedByStoreError
質問: リンクされた連絡先 (統合されていない) を変更することは可能ですか?可能である場合、何が間違っていますか?
リンクされていない連絡先を変更する場合 - すべて OK!