如何从其他应用程序添加新的托管对象?

时间:2011-11-04 09:07:44

标签: cocoa core-data

我使用Core Data只是创建了使用“使用核心数据”的项目,使用XCode默认创建的代码,如果需要,只添加或修改一些内容。

现在我有一个“主”应用程序,我创建了一个帮助应用程序(状态栏项目应用程序,LSUIElement = 1和登录项目)。帮助应用程序是Build作为主应用程序目标依赖项,并复制到主应用程序“Resources”文件夹中。

当单击状态栏图标时,帮助应用程序会向用户显示一个窗口,以根据主应用程序核心数据模型收集一些信息以创建新的托管对象。

但是,如何从主应用程序的帮助应用程序创建新的托管对象?

到现在为止我想:

  • 检查主应用程序是否打开(我不知道是否可行)
  • 如果它是打开的,让主应用程序用一个字典显示一个选择器,其中包含从帮助应用程序发送的信息(我不知道是否可能)
  • 如果它关闭,那么(在帮助应用程序中)使用主应用程序中的模型和持久存储文件创建持久存储协调器,管理对象模型和管理对象上下文。创建新的托管对象。而且我不知道每次用户创建新的MO时是否最好终止MOC,MOM和PSC,以避免在主应用程序打开时出现冲突或者它不是最佳的并且可能会影响性能......

这是一个好方法吗?有什么要开始的吗?提前致谢

1 个答案:

答案 0 :(得分:2)

您是否必须创建托管对象?如果您只是在帮助应用程序中收集简单数据,那么通过分布式通知中的userinfo字典将该输入传递到主应用程序会更加简单。然后主应用程序可以创建托管对象,您不必处理两个上下文之间的合并更改。

否则,您必须将帮助应用程序传递给MOM的路径,在帮助应用程序中创建MOC,创建对象,保存MOC,同时通过传递已更改对象的ID通知主应用程序合并更改,重新加载主应用程序的模型对象,等等。我已经开始工作,但这是一个非常令人头痛的问题,容易出错。如果可能的话,我会避开这条路线。

编辑:我刚刚意识到你希望能够写入你的主应用程序商店,即使它没有运行。听起来你需要在编写任何代码之前重新考虑这个问题。如果帮助应用程序自己执行,它实际上不是一个帮助应用程序。你能详细了解一下你实际想要完成的事情吗?这种hackery并不是一个好主意,可能会导致数据损坏。