2014-04-25 19 views
1

我在RestKit 0.22和核心数据保存时遇到问题。为了确保我的项目的其余部分不会导致问题,我使用RestKit示例中的RKTwitterCoreData重现它。我只是删除种子部分开始一个空的SQLite数据库。我的应用基于相同的概念。核心数据第一次没有保存

我第一次运行应用程序时发生了问题。该应用程序接收来自twitter的数据并显示它。但如果我看着sqlite数据库本身,它是空的。当我第二次启动应用程序时,数据库正在填充。

RestKit可以在收到数据时保存数据吗?

RestKit在保存所有数据之前可能会缓存所有数据。我虽然说我的问题发生,因为RKManagedObjectStore中的managedObjectCache设置为RKInMemoryManagedObjectCache,但我也尝试了RKFetchRequestManagedObjectCache,我得到了相同的结果。

我也尝试在[[[RKManagedObjectStore defaultStore] persistentStoreManagedObjectContext] save:nil]的成功区域手动保存,但没有奏效。

谢谢

+0

您是否正在查看sqlite数据库,同时该应用程序仍在从Xcode运行?如果是这样,根据经验,您需要在查看数据之前停止应用程序的运行。 – Nick

+0

我试了两次,当它运行,并停止应用程序后。 – olivierplante

+0

您正在查看哪个sqlite文件以及如何(不是您应该直接查看任何文件...) – Wain

回答

1

RestKit不自动保存映射结果,并要求成功完成块之前。

如果要检查商店内容,请询问MOC(主线程或持久性存储MOC)并检查registeredObjects /运行获取请求。

你不应该看SQLite文件。表结构是一个私有的实现细节,如果你在命令行加载错误的选项文件,你不一定会看到你期望的。

+0

我们使用核心数据编辑器(可在App Store中查看)来查看数据存储。 – Nick

+0

如果我在成功集成后获取数据,我将得到所有数据。但数据库是空的。为了访问数据库,我在模拟器中运行它并查看sqlite文件的应用程序文件夹,或者使用软件访问设备内容。我用MesaSQLite打开sqlite文件。我第一次运行应用程序时,数据库总是空的。 – olivierplante

+0

因此,在执行任何其他操作之前,您运行该应用程序的秒数会运行一次获取 - 它会返回什么? – Wain