gpt4 book ai didi

ios - swift 联系人框架,谓词带有 namePrefix 而不是名称

转载 作者:可可西里 更新时间:2023-11-01 02:16:51 25 4
gpt4 key购买 nike

我正在尝试获取显示特定“namePrefix”(例如先生、夫人或小姐等)的所有联系人的列表。然而,遇到了一堵砖墙。

我将以下代码与 Predicate 一起使用以获得名称搜索的结果,这很好...

let store = CNContactStore()
let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactNamePrefixKey, CNContactPhoneNumbersKey]

// Predicate = prob...? How get namePrefix
let predicate = CNContact.predicateForContactsMatchingName("James")

do {
let fetchedContacts = try store.unifiedContactsMatchingPredicate(predicate, keysToFetch: keysToFetch)

for result in fetchedContacts {
print("\(result.givenName) \(result.familyName) \(result.phoneNumbers) \(result.namePrefix)")
}
} catch {
print("Error unable to fetch")
}

但是,我需要“namePrefix”。Apple 文档显示 namePrefix 可作为属性使用,但经过反复试验,无法找到一种方法来使用它来使用“谓词”过滤我的结果。我认为可能有可能使用...“predicateForContactsWithIdentifiers”但无法找到示例。

我想知道 namePrefix 过滤器是否可以通过上面的谓词行以某种方式完成?或者如果不能,是否可以使用“predicateForContactsWithIdentifiers”来完成?

我了解 Apple 不允许对除...以外的谓词进行自定义

predicateForContactsMatchingName//predicateForContactsInContainerWithIdentifierpredicateForContactsWithIdentifiers//predicateForContactsInGroupWithIdentifier

但是,如果直接根目录不可用,我正在寻找解决方法...?

非常感谢。

最佳答案

获取所有联系人后,您可以再使用一个谓词:

let prefixPredicate = NSPredicate(format: "namePrefix = 'smth'")
let searchedByPrefix = (fetchedContacts as NSArray)
print(searchedByPrefix.filteredArrayUsingPredicate(prefixPredicate))

其中“smth”是您要查找的字符串值。

如果您正在寻找使用联系人框架的直接方式,那么在我看来没有这样的解决方案。

关于ios - swift 联系人框架,谓词带有 namePrefix 而不是名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37413424/

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