1

可能重复:
如何使用 plist 填充 UITableView

我像这样将数据保存到 plist:

- (IBAction)save:(id)sender
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"data.plist"];
    NSMutableArray *data = [NSMutableArray arrayWithContentsOfFile:plistPath];

    if (nil == data) {
        data = [[NSMutableArray alloc] initWithCapacity:0];
    }
    else {
        [data retain];
    }

    NSMutableDictionary *array = [[NSMutableDictionary alloc]init];
    [array setObject:label1.text forKey:@"Test1"];
    [array setObject:label2.text forKey:@"Test2"];
    [array setObject:label3.text forKey:@"Test3"];
    [array setObject:label4.text forKey:@"Test4"];

    NSLog(@"%@", array);
    [data addObject:array];
    [array release];

    [data writeToFile:plistPath atomically: TRUE];
    [data release];
}

NS日志:

2012-07-01 18:52:19.566 testapp[22651:707] {
    Test1 = 40;
    Test2 = 102;
    Test3 = 153;
    Test4 = 255;
}

如何将保存的数据加载到uitableview

4

1 回答 1

1

要阅读它,请执行以下操作:

NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];

然后,您应该能够读取所有键的值,如下所示:

NSString *myValue = [plistDict objectForKey:@"someKey"];

编辑:

重新阅读您的代码后,您似乎正在做一些您不想做的事情。您当前的 plist 结构是一个顶级数组,每次调用“保存”时都会为其自身添加一个字典。这是你想要做的吗?如果是这样,什么代表表格中的单元格,数组中的索引?

如果是这样,那么你想做

// top level array
NSMutableDictionary* plistArray = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];

// individual dictionary at one array index (such as indexPath.row in cellForRowAtIndexPath)
NSMutableDictionary *dictionary = [plistArray objectAtIndex:yourIndex];

在任何情况下,您命名为“array”的对象实际上是一个字典,因此您应该重命名它(或者如果您想要的话,将其更改为一个数组)。

于 2012-07-01T16:29:46.027 回答