首页 > 解决方案 > 如何在 macOS 中无错误地访问联系人

问题描述

尝试在 Xcode 10.1 中使用 Swift 从 macOS 联系人中获取联系人列表。我收到路径错误。

我正在使用推荐的方法,并将隐私密钥包含在 Info.plist 中。

func getAllContacts() {
    let status = CNContactStore.authorizationStatus(for: CNEntityType.contacts) as CNAuthorizationStatus
    print(status)

    //   if status == CNAuthorizationStatus.denied {
    //       showAccessContactsDeniedAlert()
    //       return
    //   }
    let contactStore = CNContactStore()

    let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNPostalAddressStreetKey, CNPostalAddressCityKey, CNContactPhoneNumbersKey]
    let request = CNContactFetchRequest(keysToFetch:keysToFetch as [CNKeyDescriptor])
    do {
        try contactStore.enumerateContacts(with: request, usingBlock: { (contact:CNContact, stop:UnsafeMutablePointer<ObjCBool>) -> Void in
            print("\(contact.familyName) \(contact.givenName) ")

        })
    } catch {
        //catch
    }

这是我得到的:

2019-05-13 23:54:10.586962+0200 显示客户端[2324:83437] [默认] 无法加载 Info.plist 异常 (eGPUOverrides) CNAuthorizationStatus
2019-05-13 23:54:30.347100+0200 显示客户端[2324: 83437] 无法获取通讯簿锁定文件夹的真实路径:F_GETPATH 的 open() 失败。
2019-05-13 23:54:30.347101+0200 Show Clients[2324:83437] 无法打开文件锁:{recursion count = 0, name = nil}, fileDescriptor=-1> Error Domain=NSPOSIXErrorDomain Code=14 "Bad地址” UserInfo={ABFileDescriptor=-1}

标签: swiftmacoscontacts

解决方案


推荐阅读