无法使用siri读取plist数据

时间:2018-08-09 07:34:20

标签: ios swift siri

我正在使用一个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分离的系统容器

1 个答案:

答案 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