我有一个问题;)
实际上我想在不同的线程中使用核心数据.我有两个UI视图,显示数据库中同一个表的数据.
如果在第一个视图中删除一个我应该保存的条目,然后要求PersistentStoreCoordinator给我(UIview)一个大脑新的托管对象.他们在itunesU官方视频"使用核心数据"中所说的话
使用cocoa的优秀消息系统,我可以处理基本的同步.(我发送'必须获取新MO'消息)
但是我应该如何正确保存并"关闭"数据库然后获取另一个托管对象.
<### update ###>
我有2个viewController,每个视图我都有一个.
如果我在每个ViewController上设置coredata堆栈,则可以从每个视图访问数据,但不能同步.
但是,如果我在AppDelegate中放置一个核心数据堆栈,我得到了一个异常:
*** Terminating app due to uncaught exception 'NSObjectInaccessibleException',
reason: 'CoreData could not fulfill a fault for '0x498f600
我该怎么办 ?
<### update ###>
在此先感谢任何帮助;)
每个视图都不在单独的线程上.应用程序的整个UI都在一个线程上.
在这种情况下,您不需要使用多线程.
要创建新对象,您只需要在NSEntityDescription
对象上使用类方法请求一个对象.要删除对象,您需要使用该-deleteObject:
方法NSManagedObjectContext
.
您应该只有一个核心数据堆栈,除非您处理多线程环境(不是).理想情况下,应在Application Delegate中创建堆栈,然后向下传播到UIViewController
实例.如果您收到错误,则需要单独解决该错误.从您发布的错误的外观来看,您保留/挂起NSManagedObject
已被Core Data删除的内容,因此无法实现,因为它已不在商店中.这是堆栈所在的单独问题.
在旁注中,习惯上接受您的问题的答案,然后发布一个单独的问题来回答.