【发布时间】:2013-05-25 19:24:01
【问题描述】:
你好,
这是我的第一篇文章,所以如果在某个地方已经回答了这个问题,请原谅我(我搜索过)。
问题: 我有一个 Cocoa 应用程序,它需要在系统上的多个用户帐户之间共享一个 Core Data 数据库。
想法: 我将创建一个守护进程来处理来自用户的请求(跨越用户权限边界)以保存/检索来自 Core Data 的数据。创建在应用程序中使用的共享托管对象上下文,并通过 NSXPCConnection 将该 MOC 传递给守护程序。守护进程将拥有一个完全实现的核心数据堆栈。然后我可以将在应用程序中创建的 MOC 设置为由守护程序创建的 MOC 的子级。点击保存就完成了?
问题: 这甚至会起作用吗?这只是一个愚蠢的想法吗?其他解决方案是什么? NSManagedObjectContext 符合 NSCoder 协议,但是为了将它与 XPC 一起使用,我必须对其进行子类化并使其符合 NSSecureCoding 协议?我是否还需要确保我的 ManagedObject 子类符合 NSSecureCoder 协议才能与 NSXPConnection 一起使用?我想我可以完全放弃上下文,只发送托管对象。
我假设 NSXPCConnection 复制对象而不是使用指针?它是否正确? 此外,我可能必须牢记性能,因为对象被编码/解码为完全实现的对象并且没有错误。这是正确的吗?
提前感谢您的帮助。
【问题讨论】:
-
这个问题似乎有点过于宽泛了。如果您缩小范围,提出更直接的问题并向我们展示一些代码,您可能会取得更大的成功。
标签: objective-c core-data launchd xpc nsxpcconnection