我正在使用 Core Data(用于 iPhone)设计我的第一个项目,并且我遇到了一些可能与我的设计方法相关的问题。
我正在做一个允许用户创建订单的应用程序(比如说餐厅)。我正在使用图形设计器来模拟我的持久性对象(即 OrdeMO)。我将 MO 添加到每个名称的开头以表明它是一个托管对象。我使用 XCode 自动创建托管对象类。
我创建了一些“DAO”类,允许您在托管上下文中搜索或创建新对象。
现在到我的问题。
我想创建一个 OrderMO 对象来存储用户正在创建的订单,但我不希望它成为上下文的一部分,直到用户实际放置它。我尝试使用 [OrderMO alloc] 创建对象,但我得到的对象是“不完整的”,当我尝试设置它的任何属性时,我得到一个错误。
我假设问题是我需要在上下文中创建订单才能使用它。是这样吗?
我考虑了各种选择:
如果用户放弃订单,则在上下文中创建对象和用户回滚。问题是用户可能会在此过程中保存其他上下文对象(如他的首选项),因此这不起作用。有没有办法在“单独的事务中”创建对象?
创建一个与 MO 保存相同数据的包装器对象,然后仅在用户下订单时创建 MO。这样做的缺点是我必须保持一个新的班级。
在 MO 中创建一个属性,例如“放置”,并用于在上下文中过滤我的搜索。这个问题是我最终会在域中得到“垃圾”对象(即未下的订单),我将不得不不时进行一些清理......
我还有其他选择吗?
任何建议表示赞赏。
感谢(阅读这篇长文!)Gonso