【发布时间】:2018-01-18 08:38:33
【问题描述】:
创建一个 Today 小部件,我正在使用 UserDefaults(suiteName:) 来保存一些数据。在主应用程序中,我使用UserDefaults.standard()。扩展无法读取(或者可以吗?)这就是我使用 suiteName: 构造函数的原因。
用户在主应用程序中坚持到UserDefaults.standard() 的数据需要在扩展程序中可用。
此时我坚持两者,以便可以共享值
UserDefaults.standard().set:...forKey:...
UserDefaults(suiteName:...)().set:...forKey:...
...
问题是我是否应该将UserDefaults.standard() 全部删除而只在我的应用程序中使用UserDefaults(suiteName:),或者这是一种不好的做法,如果是,为什么?
编辑:我正在使用应用程序组容器。为了澄清,我问我是否应该在整个项目中将standard() 替换为suiteName:?
【问题讨论】:
-
如果你想在扩展和应用之间共享资源,最好的方法是创建一个App Group并使用共享的
UserDefault(-suiteName:)或仅默认的FileManager(-forSecurityApplicationGroupIdentifier:)——您可能不再需要标准的用户默认值或文件管理器(但如果您需要确定要从扩展中隔离数据,您仍然可以使用这些沙盒)。
标签: swift ios-app-extension today-extension userdefaults ios-app-group