【发布时间】:2012-05-14 12:53:20
【问题描述】:
我们已经创建了一个用于与 Core Data 交互的存储库层,该存储库层具有 allItems()、addItem:(Item*)item 等方法,其中 item 是 NSManagedObject 子类。当我们需要保存一个项目时,我们调用存储库上的方法,将子类实例作为参数传递。但是,这不起作用,因为我们不能使用 initinitializer 并且上下文隐藏在存储库中。
当您拥有这样的架构时,传输对象的最佳方式是什么?让 ItemDTO 绕过一个选项?或者有没有更好的方法来解决这个问题,例如根本不使用子类 NSManagedObject,而只使用有效的键/值。
【问题讨论】:
-
你能进一步解释你的问题吗?您的问题是您无法在存储库层之外创建新的托管对象,还是您以后无法保存对象?
-
问题是上下文“隐藏”在存储库层内,我不想将其泄漏到存储库层之外。我想用它作为一个坚实的抽象点。
-
您知道每个托管对象都有一个指向托管对象上下文的指针吗?所以那只特定的猫是从袋子里出来的,有点。
-
是的,但是听着。我想在控制器中创建一个 Item 对象......然后将它传递给上下文所在的服务和存储库层。在 Java EE (JPA) 中执行此操作,对象不是附加到上下文的。
标签: iphone objective-c ios core-data