CNContactStore выполнить не удалось - PullRequest
0 голосов
/ 22 февраля 2019

Я работаю над тем, как использовать платформу контактов, однако довольно простой код для создания контакта терпит неудачу с неожиданным результатом.Это мой код:

    let Store = CNContactStore()
    Store.requestAccess(for: .contacts, completionHandler:{ success, error in
        if success {
            let Contact = CNMutableContact()
            Contact.givenName = "Dave"
            Contact.familyName = "Nottage"
            let SaveRequest = CNSaveRequest()
            SaveRequest.add(Contact, toContainerWithIdentifier: nil)
            do {
                try Store.execute(SaveRequest)
                print("Success")
            }
            catch let error as NSError {
                print(error.localizedDescription)
            }
        } else {
            print("No access")
        }
    })

.. и это результат:

2019-02-22 10:30:56.050344+1030 ContactsTest[30329:25254955] [default] Unable to load Info.plist exceptions (eGPUOverrides)
2019-02-22 10:30:57.973724+1030 ContactsTest[30329:25254955] Could not get real path for Address Book lock folder: open() for F_GETPATH failed.
2019-02-22 10:30:57.973954+1030 ContactsTest[30329:25254955] Unable to open file lock: <ABProcessSharedLock: 0x600001752ac0: name=(null), lockFilePath=(null), localLock=<NSRecursiveLock: 0x600002914a80>{recursion count = 0, name = nil}, fileDescriptor=-1> Error Domain=NSPOSIXErrorDomain Code=14 "Bad address" UserInfo={ABFileDescriptor=-1}
The operation couldn’t be completed. (Foundation._GenericObjCError error 0.)

Любые идеи о том, что может быть причиной этого?

Редактировать: Примечание такжечто это скомпилировано для macOS 10.14 SDK и работает на macOS 10.14.3

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Ответ состоит в том, чтобы установить флажок «Контакты» в «Данные приложения» в разделе «Песочница приложения» в разделе «Возможности» и включить переключатель для «Песочницы приложения».

0 голосов
/ 22 февраля 2019

Убедитесь, что вы добавили ключ NSContactsUsageDescription in Info.plist .

Пожалуйста, обратитесь к ссылке .

Важно

Приложение iOS, связанное с iOS 10.0 или после нее, должно включить в свой файл Info.plist ключи описания использования для типов данных, к которым требуется доступ, иначе произойдет сбой.Для доступа к данным Контактов, в частности, необходимо указать NSContactsUsageDescription.

...