【问题标题】:Pre store big amount of data in app在应用程序中预存储大量数据
【发布时间】:2013-10-19 11:12:54
【问题描述】:

我有大量数据(超过 100 个条目)要显示在表格视图上。数据将是静态的,所以我想将其存储在 plist 文件中。问题是当它显示在表格视图中时,用户将能够选择或取消选择一行,并且必须存储此信息。

换句话说,应用程序将有一个物品列表,用户可以选择他拥有的物品。

在应用中存储数据和所选信息的最佳方式是什么?

PS.:我避免使用 Core Data,但如果这是最好的方法,我如何将数据预存储在实体中?

【问题讨论】:

  • 如果您唯一需要更改的数据是选择,您可以轻松地拥有一个单独的文件来存储选定的索引(或者存储在一个普通文件中,索引用';'分隔, 要么使用NSArray+plist)。

标签: iphone ios objective-c uitableview core-data


【解决方案1】:

跟踪选定行和未选定行的最简单方法是: 此代码将通过您点击单元格来节省价值。

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    BOOL isSelected=[[NSUserDefaults standardUserDefaults] boolForKey:[indexPath.row stringValue]];
    [[NSUserDefaults standardUserDefaults] setBool:!isSelected forKey:[indexPath.row stringValue]];

}

【讨论】:

  • 如果应用有第二个用户怎么办?
  • 我之前想过,但我担心对许多条目使用用户默认值太多了,但由于数据只是布尔值,我认为这很好。这里的所有解决方案都很棒,但这一个真的很简单,我有点没时间了。 Petro,在我的情况下,该应用程序只允许一个用户,所以很好 =)
【解决方案2】:

没有“最佳方法”,但一种可行的方法是使用 JSON 文件。如果数据不是太大,假设 JSON 文件远小于 1 MByte。

在编辑器中创建和修改 JSON 文件非常方便。您可以像往常一样使用NSJSONSerialization 解析和创建表示。

提示:一个包含 N 个字节的 JSON 文件,创建一个 Foundation 对象的表示,大致需要总共 5*N 到 10*N 的分配空间。

【讨论】:

    【解决方案3】:

    100 个条目实际上并不是大量数据。

    我倾向于使用 plist 来处理少量数据。

    如果您愿意,您也可以将用户数据保存在同一个 plist 中: 当应用程序首次运行时,它可以将 plist 复制到文档目录,以便可以对其进行编辑(写入所有权数据)。

    或者,您可以为用户数据使用单独的 plist。

    【讨论】:

      猜你喜欢
      • 2012-06-12
      • 2019-07-13
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      • 2017-01-16
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多