Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同步iOS小部件和包含应用程序的CoreData上下文_Ios_Objective C_Core Data_Ios Extensions - Fatal编程技术网

同步iOS小部件和包含应用程序的CoreData上下文

同步iOS小部件和包含应用程序的CoreData上下文,ios,objective-c,core-data,ios-extensions,Ios,Objective C,Core Data,Ios Extensions,我目前正在为我的一个应用程序编写“今日”扩展。在扩展中,用户可以为文章设置书签。我在应用程序中有一个ViewController,它显示所有书签,并连接到一个NSFetchedResultsController 我想实现的是,如果用户通过小部件添加书签,它会自动在应用程序中弹出。我尝试了[self.managedObjectContext reset]和NSManagedObjectContextDidChangeNotification——但都没有成功。当我完全退出应用程序并再次打开它时,小部

我目前正在为我的一个应用程序编写“今日”扩展。在扩展中,用户可以为文章设置书签。我在应用程序中有一个ViewController,它显示所有书签,并连接到一个NSFetchedResultsController

我想实现的是,如果用户通过小部件添加书签,它会自动在应用程序中弹出。我尝试了
[self.managedObjectContext reset]
NSManagedObjectContextDidChangeNotification
——但都没有成功。当我完全退出应用程序并再次打开它时,小部件所做的更改是可见的,但如果应用程序仍在后台运行,则不会


有什么想法吗?

要在应用程序及其扩展程序之间共享数据,您需要创建一个应用程序组。 这并不困难,但需要采取不同的步骤:

  • 在apple开发者门户中创建应用程序组
  • 在xcode中的target->capabilities下启用应用程序组,并对扩展执行相同的操作
  • 现在,您需要将数据库放入共享包中,如果这是您的第一个版本,您可以更改核心数据盘代码的
    -applicationDocumentsDirectory
    方法以指向共享容器
  • 或者您可以共享
    NSUserDefaults
    ,以保存应用程序和扩展之间的转换数据。
    一个示例项目和一个教程。

    我已经有了一个带有共享sqlite数据库的工作应用程序组。我唯一的问题是,运行中的应用程序只有在完全重新启动时才能获取新信息。当它继续在后台运行时,它不会应用在widgets上下文中所做的更改。您找到解决方案了吗?