gpt4 book ai didi

iphone - 使用 CNContact 通过组搜索联系人

转载 作者:行者123 更新时间:2023-12-03 19:07:44 25 4
gpt4 key购买 nike

使用 Swift2,我尝试查找属于“工作”组成员的所有联系人,然后返回这些联系人。

创建谓词后。

let workPred = CNContact.predicateForContactsInGroupWithIdentifier("Work")
let keysToFetch = [CNContactGivenNameKey]
let results = contacts.unifiedContactsMatchingPredicate(workPred, keysToFetch)

但是,当存在该组 ID 的联系人时,它总是返回 0 个结果。

最佳答案

“Work” 不是组标识符。您必须通过 CNContactStoregroupsMatchingPredicate 获取组:

  • func groupsMatchingPredicate(_ predicate: NSPredicate?) throws -> [CNGroup]

然后您将获得一个 CNGroup 对象数组。每个 CNGroup 都有两个属性:

  • 姓名
  • 标识符

所以 CNGroup.identifier 是您想要在谓词中使用的内容。 CNGroup 对象的示例:

[
<CNGroup: 0x7fe563ca91f0: identifier=2DFE28EB-A9CA-4920-A77D-46BEE5A09E96, name=Friends>,
<CNGroup: 0x7fe563ca3bc0: identifier=E007B6DD-F456-48FA-A564-32256A898B67, name=Work>
]

这里可以看到标识符是生成的UUID。不是群组名称。

这是一个例子:

do {
let store = CNContactStore()

let groups = try store.groupsMatchingPredicate(nil)
let filteredGroups = groups.filter { $0.name == "Work" }

guard let workGroup = filteredGroups.first else {
print("No Work group")
return
}

let predicate = CNContact.predicateForContactsInGroupWithIdentifier(workGroup.identifier)
let keysToFetch = [CNContactGivenNameKey]
let contacts = try store.unifiedContactsMatchingPredicate(predicate, keysToFetch: keysToFetch)

print(contacts)
}
catch {
print("Handle error")
}

未找到任何合适的谓词(在 CNGroup 上)来直接匹配组名称。

关于iphone - 使用 CNContact 通过组搜索联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32997015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com