我有大量数据(超过 100 个条目)要显示在表格视图上。数据将是静态的,所以我想将其存储在 plist 文件中。问题是当它显示在表格视图中时,用户将能够选择或取消选择一行,并且必须存储此信息。
换句话说,应用程序将有一个事物列表,用户可以选择他拥有的事物。
将数据存储在应用程序和所选信息中的最佳方式是什么?
PS.:我避免使用 Core Data,但如果这是最好的方法,我如何将数据预存储在实体中?
我有大量数据(超过 100 个条目)要显示在表格视图上。数据将是静态的,所以我想将其存储在 plist 文件中。问题是当它显示在表格视图中时,用户将能够选择或取消选择一行,并且必须存储此信息。
换句话说,应用程序将有一个事物列表,用户可以选择他拥有的事物。
将数据存储在应用程序和所选信息中的最佳方式是什么?
PS.:我避免使用 Core Data,但如果这是最好的方法,我如何将数据预存储在实体中?
没有“最佳方法”,但一种可行的方法是使用 JSON 文件。如果数据不是太大,假设 JSON 文件远小于 1 MByte。
在编辑器中创建和修改 JSON 文件非常方便。您可以像往常一样使用 解析和创建表示NSJSONSerialization
。
提示:一个具有 N 个字节数的 JSON 文件创建一个 Foundation 对象的表示,大致需要总共 5*N 到 10*N 分配空间。
100 个条目实际上并不是大量数据。
对于这么少量的数据,我倾向于使用 plist。
如果您愿意,您也可以将用户数据保存在同一个 plist 中:当应用程序首次运行时,它可以将 plist 复制到文档目录,以便可以对其进行编辑(写入所有权数据)。
或者,您可以为用户数据使用单独的 plist。
跟踪选定行和未选定行的最简单方法在这里:此代码将通过点击单元格来保存值。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
BOOL isSelected=[[NSUserDefaults standardUserDefaults] boolForKey:[indexPath.row stringValue]];
[[NSUserDefaults standardUserDefaults] setBool:!isSelected forKey:[indexPath.row stringValue]];
}