无法使用应用程序组访问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集中读取和保存,需要以下内容:

  1. 在您的主应用程序中,在项目导航器中select您的项目。
  2. select您的主要应用程序目标,并selectfunction选项卡。
  3. 打开应用程序组(这将与开发者门户进行通信,因为它正在生成一组权利以及相关的应用程序ID等等)。
  4. 创build一个新的容器。 根据这个帮助,它必须以“group”开头,所以给它一个像“group.myapp.test”这样的名字。
  5. 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")