这就是故事:
在主应用程序中: - 我的网络服务中提取了一些号码。这些数字附加到NSUserDefaults。
在呼叫目录扩展名中:
从UserDefaults中检索:
private func retrievePhoneNumbersToIdentifyAndLabels() -> (phoneNumbers: [CXCallDirectoryPhoneNumber], labels: [String]) {
let defaults = UserDefaults.init(suiteName: GROUP_NAME)
let phones = defaults?.array(forKey: "phoneArray") as! [CXCallDirectoryPhoneNumber]
let names = defaults?.array(forKey: "nameArray") as! [String]
return (phones,names)
} }
这是Call Directory Extension的功能:
private func addAllIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) {
let (phoneNumbers, labels) = retrievePhoneNumbersToIdentifyAndLabels()
print(phoneNumbers)
print(labels)
for (phoneNumber, label) in zip(phoneNumbers, labels) {
context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label)
}
}
问题:当我尝试启用呼叫阻止&在我的设备上进行设置识别,它会出现“错误启用扩展”错误。而且,在Xcode的调试器中,
[用户默认值]无法读取CFPrefsPlistSource中的值< 0x10fe251d0> (域名:GROUP_NAME,用户:kCFPreferencesAnyUser,ByHost:是,容器:( null),内容需要刷新:是):只允许使用带容器的kCFPreferencesAnyUser,系统容器,从cfprefsd分离
但这是故事中有趣的部分:
出现这些问题后,不知何故,上述功能的打印功能正常运行。 我的意思是,它可以将电话号码和标签保存到UserDefaults,也可以从UserDefaults中读取。为了澄清,我可以在我的扩展程序中访问UserDefaults。没有问题。
注意:当然,主要应用和呼叫目录扩展的应用组已设置,电话号码具有正确的类型,即Int64。而且,电话号码按升序排序。
答案 0 :(得分:0)
确保您不会意外损坏数据。共享数据文件意味着可能有多个进程尝试同时使用文件。 iOS上的沙盒意味着这种情况有点罕见,但这并不意味着可以忽略它。您可能需要使用“NSFileCoordinator”
您可以在此地址找到更多解释性信息:enter link description here
答案 1 :(得分:0)
我遇到了同样的问题。 您必须在Ad-Hoc或Release模式下进行测试! 似乎在调试模式下,它有时无法正常工作!