我正在使用一个Siri应用程序。我将数据保存在plist
中并检索联系人。但无法获得plist
日期。这是代码:
我在这里获取保存的数据,路径是:
/var/mobile/Containers/Data/Application/EB3CE9B8-EECC-459E-9AF0-749E10C26F95/Documents/data.plist
但是当我使用siri并尝试获取plist数据的打印空值时,在代码中也是如此:
i tried nsuserdefault also.And the path is :
/var/mobile/Containers/Data/PluginKitPlugin/80E47164-FC1F-4DBA-AAD5-D0F37107BD42/Documents/data.plist
不确定我在哪里遇到问题。但是,当我尝试从plist数据中获取应用程序委托中的数据时。我正进入(状态。但是,为什么不使用Siri,却没有获取联系人数据。而且甚至NSUserDefault
也不起作用。
注意:当我使用Siri时,我的应用程序将在后台运行,终止或可能处于活动状态。
谢谢!
更新:
我尝试过:
保存数据
let defaults = UserDefaults(suiteName: "group.com.example.app")
defaults?.set(23, forKey: "siridata")
阅读:
let defaults = UserDefaults(suiteName: "group.com.example.app")
let returnValue = defaults?.double(forKey: "siridata")
它没有打印23
。它正在打印0.0
在我的目标中:
My app name group : group.com.example.app
My PaymentIntentExtension : group.com.example.app
我正在领事:
[用户默认值]无法读取CFPrefsPlistSource <0x101531c40>中的值(域:group.com.example.app,用户:kCFPreferencesAnyUser,ByHost:是,容器:(空),需要刷新的内容:是):使用仅将带有容器的kCFPreferencesAnyUser用于与cfprefsd分离的系统容器
答案 0 :(得分:0)
Intents扩展程序和主应用程序位于单独的沙箱中,因此您需要通过“应用程序组”使用共享容器。
这是一篇有关如何执行此操作的文章:https://www.atomicbird.com/blog/sharing-with-app-extensions
在主应用目标和扩展目标的功能中都设置了应用组后,您可以使用containerURL(forSecurityApplicationGroupIdentifier:)
https://developer.apple.com/documentation/foundation/filemanager/1412643-containerurl
共享UserDefaults的工作原理类似,也使用应用程序组和init(suiteName:)
https://developer.apple.com/documentation/foundation/userdefaults/1409957-init