在iOS Apps上保存数据的最有效方法

时间:2012-08-16 15:35:39

标签: objective-c ios database cocoa-touch data-storage

我正在创建一个包含多个UITableViewControllers的App。到目前为止,我已经将它们全部连接到我的不同JSONGetStuff.php文件,然后使用JSON编码从我的数据库获取数据。这非常有效。大多数表都包含包含文本和图像的单元格。现在我有四个包含不同数据的tableView,我觉得要保存数据而不是每次都加载它。现在我让应用程序访问ViewDidLoad上的JSON.php文件,并将数据存储在NSArray中,然后通过NSDictionary解析它们以获取ObjectForKey:@“”;此数据是SQL服务器的常规表,如“Name”“Adress”“ImageName”等。

我意识到我不会经常更新数据库,很可能一个月一次或两次,甚至可能更少。所以我决定将信息存储在app insted中。不是每次我更改数据库时都必须发布更新的方式,而是保存直到更新。

我想我的应用程序中应该有一个名为“Version”的整数,= 1;在释放。然后,当应用程序启动时,我想让应用程序转到www.mywebsite.com/version.php,并检查回显的变量是否与“Version”相同。每当我更改数据库时,我都可以更改此整数++。当应用程序启动并检查版本,并且在本地出错时,我希望它下载整个加载,并覆盖存储在iPhone上的当前数据。

我不知道从哪里开始。我使用JSON是因为直接连接到数据库是不好的,但由于我的数据是数据库数据,我可以创建一个本地数据库并使用该信息而不是数组吗?我读到某处可能.plist对字符串更好,而我的整个数据库只是字符串(varchar x)。

我在哪里保存初始数据?如何使用即JSON解析我的数据库数据?如何在时机成熟时覆盖这些数据?我从哪里开始?我应该读一下.plist,NSData,NSCoding还是NSFileManager?

2 个答案:

答案 0 :(得分:4)

尝试考虑将数据持久保存在核心数据库中。核心数据是处理数据库的持久框架。核心数据为你处理很多东西(关系,内存等),并且可以很好地处理表格(使用NSFetchedResultsController)。

http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/cdProgrammingGuide.html

当然,这一切都取决于数据量,但您可以开始查看链接的文档。

答案 1 :(得分:1)

如果数据很简单,您可以使用NSCacheNSUserDefaults快速有效地存储数据。