ios – 如何使用NSUserDefaults与包含应用程序共享数据? – 今日Extension Widget

我正在尝试创建一个Today Extension Widget,它在窗口小部件中显示存储的数据.

这就是我所做的;

>添加了新的今日小部件目标
>为小部件设置UIViewController
>为应用和扩展启用应用组

现在我遇到了障碍,我不确定检索和显示简单的获取数据数组的最佳方法.

Swift教程非常少,他们通常不使用核心数据.

在主应用程序项目中,我获取数组.

 let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
 let request = NSFetchRequest(entityName: "Objects")
    do {
      try
      self.objectsArray = moc.executeFetchRequest(request) as! [Objects]
    } catch {

    }

如何使用NSUserDefaults存储对象数组,然后在今天的小部件扩展中使用?或者甚至是一串字符串值.

最佳答案 1)获取数据库的URL

var containerPath: String = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier‌​(YOUR_SECURITY_APP_GROUP).path 

var sqlitePath: String = "(containerPath)/("database.sqlite")"

2)像在父应用程序中一样创建持久性存储协调器.

3)为您的托管对象上下文设置它

context = NSManagedObjectContext()
context.persistentStoreCoordinator = coordinator

4)像在父应用程序中一样检索对象

let moc = context
let request = NSFetchRequest(entityName: "Objects")
do {
  try self.objectsArray = moc.executeFetchRequest(request) as! [Objects]
} catch {}
点赞