ios:创建Core Data对象而不立即持久化

时间:2011-11-12 09:50:25

标签: ios core-data persistence

我从互联网上获取一些数据,并希望将这些数据存储在一个对象中,比如“InternetData”。此类包含一些属性,并且此类也绑定到核心数据持久性存储。

我已经从我的应用程序的上一个会话中下载了InternetData,它们已经存储在核心数据映射对象的数据库中。问题:如果我现在要下载新的Internet数据,我将至少部分下载相同的新的Internet数据的一小部分是真正新的,其余的已经存储在我的数据库中。我想避免将两次或更多次存储相同的数据。

因此,我想用[[InternetData alloc] init]创建一个空的InternetData实例,将我下载的内容写入该对象,之后我想使用比较方法将未绑定的新InternetData对象与来自数据库的旧的。只有我在旧数据中找不到新对象我想将新对象添加到持久性存储中并最终将其存储到数据库中。我目前遇到的问题是,当我尝试创建一个独立于persitence sotre的新InternetData对象时,我的程序崩溃了,我的意思是在做[[InternetData alloc] init]时收到错误消息

  

CoreData:错误:无法在NSManagedObject类'InternetData'上调用指定的初始化程序      [InternetData setDate:]:无法识别的选择器发送到实例0xd26f4f0

所以我的问题:这是我想要的基本上可能创建InternetData的对象,该对象最初没有绑定到核心数据持久性存储,并且在短时间之后我将新创建的数据复制到第二个有界InternetData对象中(我以有界的方式创建)然后将其存储到持久性存储中?

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决您的问题。首先,你无法分配NSManagedObjectModel的+ init实例。因此,您可以执行以下操作来存储临时数据:

  1. 将其存储在NSDictionary
  2. 将其存储在另一个NSManagedObjectContext