【问题标题】:Get data from a PList into UITableView?从 PList 获取数据到 UITableView?
【发布时间】:2011-12-26 13:41:33
【问题描述】:

我想维护一个记录列表,对于每个记录我都维护相同类型的数据。我想在 2 个不同的地方使用这些数据:

  1. UITableView 从每条记录中获取“名称”值
  2. UIViewController 将所有数据用于不同的字段。

我假设我应该使用 plist 来存储数据;我还假设应该接收UITableView 数据的对象是NSArray,所以我可以使用cellForRowAtIndexPath 方法自动创建表。

所以我创建了 plist “PLForArr.plist”:

似乎我只能在使用调用 plist 时获得一个 NSDictionary

NSString *path = [[NSBundle mainBundle] pathForResource:@"PLForArr" ofType:@"plist"];
NSArray * myArr = [[NSArray alloc] initWithContentsOfFile:path]; //doesn't work...
NSDictionary * myDict = [[NSDictionary alloc] initWithContentsOfFile:path]; //does work, but who to I make a NSArray out of it / or get the data from here to the UITableView?

我知道我在这里不懂一些基本的东西......有人可以带我一步一步吗:

  1. 如何保存数据 - 我应该使用 plist 还是其他东西?我应该有一个数组类型的主要记录(就像我在此处的示例 plist 中所做的那样)还是我可以将其保留为这些字典,而没有考虑到UITableView 最终目标而使用的不必要的MyArr
  2. 如何调用数据 - 有没有办法将其放入 NSArray 或必须放入 NSDictionary
  3. 如何在 UITableView 中调用它 - 我可以使用NSDictionary 填写行吗?

【问题讨论】:

    标签: objective-c uitableview nsarray plist nsdictionary


    【解决方案1】:
    1. 存储数据是数组还是字典取决于您。但是,如果您想随着时间的推移对其进行更改,则无法将其存储在主包中。

    2. 您的 pList 文件是一个包含数组的字典。请参阅下面的代码示例。

    3. 您必须将字典存储在一个数组中,作为表的数据源。请参阅下面的代码示例。

    假设你的 UITableView 的数据源叫做 tableArray。您可以使用 tableArray 来填写表格和您的视图中的信息。哦对了,

    NSString *path = [[NSBundle mainBundle] pathForResource:@"PLForArr" ofType:@"plist"];
    NSDictionary *myDict = [[NSDictionary alloc] initWithContentsOfFile:path];
    
    NSArray *myArray = [myDict objectForKey:@"MyArray"];
    self.tableArray = [myArray copy];
    [myArray release];
    [myDict release];
    

    这在 tableView 中:cellForRowAtIndexPath:

    cell.text = [[tableArray objectAtIndex:row]objectForKey:@"Obj Name"];
    

    【讨论】:

      【解决方案2】:
      1. 将数据存储在字典或数组中由您决定。根据您拥有的数据类型,您将考虑存储无序的对象集合(字典),使用 keys 访问条目;或者更确切地说,在有序集合(数组)中,使用数字 indexes

      2. 可以从属性列表文件中获取数组,但是根(顶级)对象是一个字典(在截图中,“MyArr”不是顶级对象,它是访问的关键您在顶级字典中的数组)。要从中获取数组,只需按照您的方式分配/初始化 plist 字典,然后使用其键 ([myDict objectForKey:@"MyArr"]) 访问数组条目。否则请确保将属性列表的根对象设置为数组,然后重试NSArrayinitWithContentsOfFile:

      3. 真正的问题似乎是如何我可以用我的数据填充单元格?表视图向其委托和数据源询问要显示多少节,即一节中的行。根据这些数字,它将向数据源询问单元格。再次根据您选择的存储类型,您将实现这些方法略有不同,但概念仍然存在。

      您可能想阅读有关以下内容的文档:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        • 2012-06-24
        相关资源
        最近更新 更多