2013-05-01 41 views
0

任何建议之前,我们使用一个managedObjectContext为[context save:&error];CoreData NSManagingContextDidSaveChangesNotification节省空对象的iOS5

我们节省了iOS5的核心数据的新对象。

问题是,我们第一次保存一个新的对象,NSManagingContextDidSaveChangesNotification火灾和[[notification userInfo] objectForKey:NSUpdatedObjectsKey]回馈一个未填充的对象。在iOS6中,objectForKey:NSUpdatedObjectsKey已填充。

之后当我们保存objectForKey:NSUpdatedObjectsKey被填充。

我们总是使用的上下文是[[UIApplication sharedApplication] delegate].mainDocument.managedObjectContext

所以问题是,第一次调用[context save:&error]时,没有东西被保存到数据库。但它已被保存到对象中,所以下次调用[context save:&error]时,它将被放入db中。

有没有人有关于此的任何信息。我听说过iOS5中CoreData的错误,所以如果有人有任何建议,我们将不胜感激。

+0

我找到了问题。我们正在使用ALAssetsLibrary将图像保存到资产库中,并且当您在iOS5中首次执行此操作时,Apple会提示用户使用“...将使用您的Curent位置”来查找您保存的任何元数据。此警报阻止上下文保存。这通过关闭位置服务得以证明,并且保存起来没有问题。这也解释了为什么它只发生在我们第一次拯救它时,我们没有在第一次之后得到警报。 – hatebyte 2013-05-03 19:27:44

回答

0

检查在给定的顺序这些项目:

  • 确保当你将它保存在第一时间(例如NSLog的)对象已填充。
  • 确保您正确查询通知的userInfo。
  • 确保在这一点上的物理数据库不包含正确的信息(例如,通过sqlite3命令行工具)
  • 确保你输出时,你检查它是否填充或不正确的对象。
+0

•如果你看问题,我说我正在查询通知的userInfo。 – hatebyte 2013-05-03 19:36:07

+0

你没有提到这个框架。即使您检查'userInfo',上面的清单仍然有效。谢谢你浪费我的时间。 – Mundi 2013-05-04 21:00:09