1

我是一名新的 iOS 开发人员,我正在制作一个使用来自 Restful Web 服务的信息的 iOS 应用程序。我能够从服务器获取数据,但有时数据需要一段时间才能加载。数据的某些方面不会一直变化(例如,商店出售的商品),但数据的某些方面每天都会发生变化(例如,某个商品的库存数量)。我想将不会一直变化的数据存储到 iOS 内存中。从我的研究来看,核心数据似乎是做到这一点的最佳方式。

如何将不会一直更改的对象数据存储到 iOS 的核心数据中并让它在启动时加载该数据,然后获取一直更改的信息?

我做了一些搜索,据我了解,我可以通过获取数据来利用核心数据,然后将其存储到看起来像数据库的东西中。然后我可以从 NSManagedObjects 中获取预加载的数据并在运行时显示它们。

这是一个正确的方法吗?另外,如果数据发生变化(销售新商品),Restkit 会处理这个并将其存储到核心数据中,还是我需要设置它以注意到变化?

感谢您的帮助!

4

2 回答 2

1

使用 RestKit,您可以基于 CoreData 模型构建数据库,但您也可以使用预填充的数据库进行构建。

您的 objectManager 应如下所示:

RKObjectManager* objectManager = [RKObjectManager managerWithBaseURLString:@"http://your-url.com"];
objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"new-database.sqlite" usingSeedDatabaseName:nil managedObjectModel:nil delegate:self];

或者如果您想要预填充数据库的副本,则像这样:

objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"new-database.sqlite" usingSeedDatabaseName:@"last-database.sqlite" managedObjectModel:nil delegate:self];

Your last-database.sqlite must be integrated like a copy bundle resource.

This system can help you if you don't want to refresh all datas.

于 2012-07-06T14:43:27.310 回答
0

查看 RestKit 示例目录并打开 RKTwitterCoreData 项目。它向您展示了一个完全按照您的描述进行操作的系统。

于 2012-07-06T07:18:13.677 回答