1

我想使用 plist 制作一个分段的 UITableView。最初,我的 plist 的结构是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>name</key>
        <string>First</string>
        <key>description</key>
        <string>First</string>
        <key>image</key>
        <string>image.png</string>
    </dict>
    <dict>
        <key>name</key>
        <string>Second</string>
        <key>description</key>
        <string>SecondR</string>
        <key>image</key>
        <string>image.png</string>
    </dict>

//etc
</array>
</plist>

我的 'detailView中的 UIImageView 中name的行和rowNamed标签的名称在哪里?detailViewand ìmagedetailView

cell.textLabel.text 确实以name这种方式显示了密钥:

cell.textLabel.text = [[sortedList objectAtIndex:indexPath.row]objectForKey:@"name"];

现在,按照这个问题的答案,从 pList 中截取 UITableView,我创建了带有部分的新 plist 文件,结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>Title</key>
        <string>   Section1</string>
        <key>Rows</key>
        <array>
            <dict>
                <key>name</key>
                <string>Test</string>
                <key>description</key>
                <string>test</string>
                <key>image</key>
                <string>testtttt</string>
            </dict>
        </array>
    </dict>
    <dict>
        <key>Title</key>
        <string>   Section2</string>
        <key>Rows</key>
        <array>
            <dict>
                <key>name</key>
                <string>Test</string>
                <key>description</key>
                <string>test</string>
                <key>image</key>
                <string>testtttt</string>
            </dict>
        </array>
    </dict>
</array>
</plist>

关键是现在我不知道如何使它类似于以前的 plist 结构(我的意思是,图像,名称和描述),我不知道如何cellForRowAtIndexPath显示name包含在Rows单元格标题中的键. 我试过了

cell.textLabel.text = [[[sortedList objectAtIndex: indexPath.section] objectForKey: @"name"]objectAtIndex:indexPath.row];

但我得到一个空单元格。

我希望 cell.textLabel.text 显示name每个部分中包含的每个元素(行)的键有人可以帮助我吗?

4

1 回答 1

2

plist是一个数组dictionaries。每个dictionary代表一个section。并且rows在 asection中作为 an arraywho keyis Rowsin that section/存在dictionary。所以要得到一个row在特定的section,首先得到的section。然后得到row使用objectForKey:@"Rows".

一旦你有了行array,它就会再次包含几个rows作为dictionary.

NSDictionary *section = [sortedList objectAtIndex:indexPath.section];
NSArray *rows = [section objectForKey:@"Rows"];
cell.textLabel.text = [[rows objectAtIndex:indexPath.row] objectForKey:@"name"];
于 2012-06-10T09:46:29.627 回答