我正在开发一个使用持久存储来保存和检索数据的应用程序。我已经完成了所有工作,但有一些奇怪的行为让我怀疑我正在做的事情是否正确。
当我构建我的App时,一些值被加载到持久性存储中并且可以被访问。当我在界面构建器中关闭应用程序然后重新加载它时,这仍然是正确的。
加载的数据在记录时看起来很像:
实体:任命;数据:{day = monday;小时= 8; project = PROJECT1; task = task1; }
现在,在重建App时,商店中的条目仍然存在,但是,应该在这些条目中的数据似乎被销毁。
加载的数据现在看起来像:
实体:任命;数据:错误
我会假设商店完全重建,因此不会留下任何条目,或者它会在重建之前保持原样。
约会是在我的xcdatamodel中定义的NSManagedObject
类,并且有四个字符串属性(日,小时,项目和任务)。
答案 0 :(得分:1)
如果没有代码,很难看到发生了什么。你收到错误了吗?
数据:错误并不意味着你做错了什么。每次执行请求时,Core Data都不会检索整个对象,而是检索骨架。对象中的数据不会立即填充,但仅在您触发故障时(例如访问该实体的属性)。
因此,如果您以这种方式记录该对象:
NSLog(@"%@", managedObject);
这可能是其动机。
有关故障的更多信息,建议您阅读Faulting。
希望它有所帮助。
答案 1 :(得分:0)
运行模拟器,然后在顶部菜单栏中选择iOS Simulator
- > Reset Content & Settings...
。它会重置您应用的所有数据,包括CoreData。
或者您可以转到~/Library/Application\ Support/iPhone\ Simulator/5.0/Applications
,删除应用包。
或者只是删除xxx.sqlite
中的~/Library/Application\ Support/iPhone\ Simulator/5.0/Applications/E88E378D-14A9-4900-A613-BF9082D4B2C1(YourAppBundle)/Documents/
文件。
然后重建项目并运行它,立即清理数据。 ;)