【问题标题】:How to reload a plist file into a table如何将 plist 文件重新加载到表中
【发布时间】:2011-12-25 16:27:25
【问题描述】:

我有一个 Plist 文件(在捆绑包之外),用于存储用户的收藏夹。加载后,它按预期工作,Plist 被加载到表中。

但是,当您向 Plist 添加新项目时:plist 文件(在捆绑包之外)会更新。如日志所示,触发了重新加载 tableview。但是,数据实际上并没有从 Plist 重新加载,它只是使用现有的 (Array) 值。除非您退出并重新加载整个应用程序,否则更新后的 Plist 会显示在表格中。

我怎样才能让我的表从更新的 Plist 中真正重新加载,而不仅仅是使用原始数组。

谢谢。

我使用此代码从 Plist 获取数据 - 工作。

 NSMutableArray *rawFavArray = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];

我使用它来遍历数组以创建表格的单元格信息 - 工作。

 return [favReloadArray objectAtIndex:indexPath.row];

我使用它来重新加载表(在 viewWillApear 内) - 不工作,触发日志,但不重新加载 Plist。

 [self.tableView reloadData];

当我尝试更改 Plist 中的数据时 - 我可以这样做,但除非我退出应用程序并重新开始,否则任何更改都不会显示在表格中。

【问题讨论】:

  • 听起来您正在使用新项目创建一个新数组,然后将该数组保存到 plist 文件中,但不将数组提供给 tableview,因为它是新内容。请编辑您的问题以包含您的源代码,以便我们向您展示它是如何完成的。
  • reloadData 只告诉 UITableView 重新加载可见单元格并调用委托方法。它不会重新加载任何数组或模型对象。也就是说,无论如何,您都不应该在应用程序之外修改 plist ——尤其是在 iPhone 上,这几乎是不可能的(除非越狱)。

标签: ios uitableview plist reload


【解决方案1】:

就在您调用 reloadData 之前,您应该拥有 [favReloadArray release]; favReloadArray = [[NSMutableArray alloc] initWithContentsOfFile:plistPath];

favReloadArray = [NSMutableArray arrayWithContentsOfFile:plistPath];
取决于您首先创建 favReloadArray 的方式。

【讨论】:

    【解决方案2】:

    myArray = [NSArray arrayWithContentsOfFile: myFilePath];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      相关资源
      最近更新 更多