当数据不是静态的时,我应该如何保存大量数据。 iOS、可可触控、Obj-C

Posted

技术标签:

【中文标题】当数据不是静态的时,我应该如何保存大量数据。 iOS、可可触控、Obj-C【英文标题】:How should I go about saving lots of data when the data will not be static. iOS, Cocoa Touch, Obj-C 【发布时间】:2012-10-31 20:32:26 【问题描述】:

好吧,我真的不知道如何在我的 ios 应用上保存大量数据。该应用程序将允许用户创建一个条目,该条目将具有其名称的时间戳。对于每个条目,我需要存储多种数据(NSString、Boolean、Double、Float)。

每个条目都必须保存如下信息:

/////////

浮动

浮动

浮动

浮动

浮动

NSString

NSString

NSString

NSString

NSString

布尔值

布尔值

布尔值

//////////

因此,每个条目总共有 13 个值。但是,条目的数量可以无限地创建,并且会不断变化。因此,我应该如何存储所有这些信息。我对此很陌生,到目前为止我使用的只是NSUserDefaults。谢谢。

【问题讨论】:

【参考方案1】:

有了很多入口对象,Core Data 看起来很适合这个。在处理数据密集型应用程序时,它也是您工具带中的一个很好的框架。您基本上绘制出数据模型,然后将模型导出到可以查询的自定义对象(很像数据库)。

Lynda.com 上有一个很棒的教学系列,但你可以在这里找到来自 Apple 的很好的参考:

https://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html

祝你好运!

【讨论】:

谢谢。我想我会试试看。【参考方案2】:

由于它们的顺序或类型非常动态,您可以只使用一个集合类(例如NSDictionaryNSArray)来保存数据的 objc 对象表示。这些类型采用NSCoding - 只要它们的元素/内容也与NSCoding 兼容(例如NSNumberNSStringNSNumberCFBoolean(用于布尔值)),就可以了.

NSKeyedArchiver 在您的字段/类型不变时是一个不错的选择。

【讨论】:

【参考方案3】:

使用核心数据。它非常灵活,为将数据从一种模式迁移到另一种模式提供了出色的解决方案,并且与 iCloud 紧密集成。从这里开始:

CoreData Getting Started

【讨论】:

以上是关于当数据不是静态的时,我应该如何保存大量数据。 iOS、可可触控、Obj-C的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 应用程序中缓冲视频并保存在本地数据库中?

当所有单元格都是静态的时将单元格添加到 UITableView(在情节提要中设计)

redux-thunk 是不是应该管理设备上的数据加载和保存?

如何快速保持会话

iOS - 核心数据 - NSManagedObjectContext - 不确定是不是保存

iOS - 我应该使用啥来保存数据