无法使用应用程序组访问NSUserDefaults
我正在开发一个应用程序和一个widget,widget需要从app获取数据。 我用下面的代码来读写NSUserDefaults。 而且我还使用了$(PRODUCT_BUNDLE_IDENTIFIER).widget
作为窗口小部件, $(PRODUCT_BUNDLE_IDENTIFIER)
引用了这个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您的主要应用程序目标,并selectfunction选项卡。
- 打开应用程序组(这将与开发者门户进行通信,因为它正在生成一组权利以及相关的应用程序ID等等)。
- 创build一个新的容器。 根据这个帮助,它必须以“group”开头,所以给它一个像“group.myapp.test”这样的名字。
- select你的今天的扩展目标,并重复这个开启应用程序组的过程。 不要创build一个新的,而是select这个新创build的组来表示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 3.0:
写
UserDefaults(suiteName: "group.myapp.test")!.set(true, forKey: "FirstLaunch")
读
UserDefaults(suiteName: "group.myapp.test")!.bool(forKey: "FirstLaunch")