6

デバイスの 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!

4

1 に答える 1

0

連絡先アプリが Exchange アカウントに連絡先を保存するように構成されている場合、このエラーが発生します。iCloud アカウントをデフォルトとして選択すると、すぐに連絡先が保存されます。[設定] -> [連絡先] -> [既定のアカウント] でデバイスの設定を確認できます

于 2019-07-15T16:18:10.267 に答える