swift - 如何在 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}