使用 Xcode 读取和写入具有字典数组的 Plist

Posted

技术标签:

【中文标题】使用 Xcode 读取和写入具有字典数组的 Plist【英文标题】:Read & write my Plist that has an Array of Dictionary using Xcode 【发布时间】:2011-07-18 05:48:01 【问题描述】:

这是我的问题,我正在尝试创建一个 UITableView,它能够将我的 plist 中的名称显示到单元格中。我无法从 Plist 中获取名称。我猜我不太确定提取信息所需的编程代码。

如果您能提供一个好的教程或示例代码来提供帮助,那就太好了。谢谢!

<array>
    <dict>
        <key>Name</key>
        <string>Device 2</string>
    </dict>
    <dict>
        <key>Name</key>
        <string>Device 1</string>
    </dict>
</array>

这些代码在我的 viewDidLoad..

NSBundle *bundle = [NSBundle mainBundle];

    NSString *path = [bundle pathForResource:@"devicelist" ofType:@"plist"];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:path]) 
        NSLog(@"The file exists");
     else 
        NSLog(@"The file does not exist");
    

    contentDict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"The count: %i", [contentDict count]);
    contentArray = [NSMutableArray arrayWithContentsOfFile:path];
    NSLog(@"The array: %i", [contentArray count]);
    [contentArray retain];
    [contentDict retain];
    [mainTableView reloadData];

这些在我的 tableView..

static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier]autorelease];
    

    cell.textLabel.text = [sortedArray objectForKey:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    return cell;

【问题讨论】:

【参考方案1】:

也许您想在 viewDidLoad 中尝试以下内容:

NSBundle *bundle = [NSBundle mainBundle];

    NSString *path = [bundle pathForResource:@"devicelist" ofType:@"plist"];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:path]) 
        NSLog(@"The file exists");

    self.contentArray = [NSMutableArray arrayWithContentsOfFile:path];
    NSLog(@"The array: %i", [contentArray count]);

    [mainTableView reloadData];

请注意 contentArray 应该是一个保留属性,然后在 cellForRowAtIndexPath 方法中:

NSDictionary *dict = [self.contentArray objectAtIndex:indexPath.row];
cell.textLabel.text = (NSString*)[dict objectForKey:@"Name"];

希望这会有所帮助...

【讨论】:

以上是关于使用 Xcode 读取和写入具有字典数组的 Plist的主要内容,如果未能解决你的问题,请参考以下文章

字符串,字典,数组写入本地文件和从本地文件读取

如何清除在 Xcode 中创建的 plist 中的数据?

我想从 Plist 中读取具有属性(btnImage+btnTitle)的字典数组到 TableViewCell

具有同时读/写功能的C#字典

无法过滤使用字典数组创建的tableview

从 JSON 写入/读取图像以在 Xcode 中使用