无法使用一个到另一个应用程序组访问 NSUserDefaults
Cannot access NSUserDefaults using app groups one to another
我正在开发一个应用程序和一个小部件,该小部件需要从应用程序获取数据。我使用以下代码在 NSUserDefaults 上读写。我还使用 $(PRODUCT_BUNDLE_IDENTIFIER).widget
作为小部件,$(PRODUCT_BUNDLE_IDENTIFIER)
指的是 this post。但是小部件无法从应用程序或 NSUserDefaults 获取数据。我怎样才能让它发挥作用?
func addTask(name: String?) {
let key = "keyString"
tasks.append(name!)
let defaults = NSUserDefaults(suiteName: "group.Mins")
defaults?.setObject(tasks, forKey: key)
defaults?.synchronize()
}
///////
let defaults = NSUserDefaults(suiteName: "group.Mins")
let key = "keyString"
if let testArray : AnyObject = defaults?.objectForKey(key) {
let readArray : [String] = testArray as! [String]
timeTable = readArray
timeTable = timeTable.sort(<)
print("GOT IT")
print("timetable: \(timeTable)")
}
要从同一组 NSUserDefaults 中读取和保存,您需要执行以下操作:
- 在您的主应用中,select您的项目在项目导航器中。
- Select 您的主要应用目标并选择功能选项卡。
- 打开应用程序组(这将与开发者门户通信,因为它正在生成一组权利和相关的应用程序 ID 等等)。
- 创建一个新容器。根据帮助,它必须以“group.”开头,所以给它起一个像“group.myapp.test”这样的名字。
- Select 您的 Today Extension 目标并重复此打开应用程序组的过程。不要创建新的,而是 select 这个新创建的组来表示 Today Extension 是该组的成员。
写入您的 NSUserDefaults:
// In this example I´m setting FirstLaunch value to true
NSUserDefaults(suiteName: "group.myapp.test")!.setBool(true, forKey: "FirstLaunch")
从 NSUserDefaults 读取:
// Getting the value from FirstLaunch
let firstLaunch = NSUserDefaults(suiteName: "group.myapp.test")!.boolForKey("FirstLaunch")
if !firstLaunch {
...
}
Swift 4.x:
写入:
UserDefaults(suiteName: "group.myapp.test")!.set(true, forKey: "FirstLaunch")
阅读:
UserDefaults(suiteName: "group.myapp.test")!.bool(forKey: "FirstLaunch")
我正在开发一个应用程序和一个小部件,该小部件需要从应用程序获取数据。我使用以下代码在 NSUserDefaults 上读写。我还使用 $(PRODUCT_BUNDLE_IDENTIFIER).widget
作为小部件,$(PRODUCT_BUNDLE_IDENTIFIER)
指的是 this post。但是小部件无法从应用程序或 NSUserDefaults 获取数据。我怎样才能让它发挥作用?
func addTask(name: String?) {
let key = "keyString"
tasks.append(name!)
let defaults = NSUserDefaults(suiteName: "group.Mins")
defaults?.setObject(tasks, forKey: key)
defaults?.synchronize()
}
///////
let defaults = NSUserDefaults(suiteName: "group.Mins")
let key = "keyString"
if let testArray : AnyObject = defaults?.objectForKey(key) {
let readArray : [String] = testArray as! [String]
timeTable = readArray
timeTable = timeTable.sort(<)
print("GOT IT")
print("timetable: \(timeTable)")
}
要从同一组 NSUserDefaults 中读取和保存,您需要执行以下操作:
- 在您的主应用中,select您的项目在项目导航器中。
- Select 您的主要应用目标并选择功能选项卡。
- 打开应用程序组(这将与开发者门户通信,因为它正在生成一组权利和相关的应用程序 ID 等等)。
- 创建一个新容器。根据帮助,它必须以“group.”开头,所以给它起一个像“group.myapp.test”这样的名字。
- Select 您的 Today Extension 目标并重复此打开应用程序组的过程。不要创建新的,而是 select 这个新创建的组来表示 Today Extension 是该组的成员。
写入您的 NSUserDefaults:
// In this example I´m setting FirstLaunch value to true
NSUserDefaults(suiteName: "group.myapp.test")!.setBool(true, forKey: "FirstLaunch")
从 NSUserDefaults 读取:
// Getting the value from FirstLaunch
let firstLaunch = NSUserDefaults(suiteName: "group.myapp.test")!.boolForKey("FirstLaunch")
if !firstLaunch {
...
}
Swift 4.x:
写入:
UserDefaults(suiteName: "group.myapp.test")!.set(true, forKey: "FirstLaunch")
阅读:
UserDefaults(suiteName: "group.myapp.test")!.bool(forKey: "FirstLaunch")