我试图将下面的plist字典读入UITableView的单元格。我想为ArrayKey表示的数组中包含的每个字符串创建一个子视图,如:
Row1: | myString1 |
Row2: | myString2 || myString3 |
我使用快速枚举来读取字典,但我只能成功读取每个数组中的第一个字符串:
CGFloat constant = 0;
for (NSArray key in [dictionary objectForKey:@"ArrayKey"]) {
UILabel *label = (UILabel *)cell;
label.text = (NSString *)key;
label.frame = CGRectMake(0 + constant, 0, 30, 30);
constant = 20 + CGRectGetMaxX(label.frame);
}
我错过了子视图片段。我很困惑为什么如果我添加一个快速枚举的NSLog,输出将显示数组中的所有字符串,但我只能显示第一行(即一行中的myString1和没有myString3的第二行中的myString2)。
<dict>
<key>TitleKey</key>
<string>myTitle1</string>
<key>ArrayKey</key>
<array>
<string>myString1</string>
</array>
</dict>
<dict>
<key>TitleKey</key>
<string>myTitle2</string>
<key>ArrayKey</key>
<array>
<string>myString2</string>
<string>myString3</string>
</array>
</dict>
答案 0 :(得分:0)
解释为什么这段代码完全正常工作。我相信你只发布部分代码。
UILabel *label = (UILabel *)cell;
将创建一个指向精确的指针
相同的项目cell
并覆盖那里的任何内容。dictionary
为nil
,那么[dictionary
objectForKey:@"ArrayKey"]
必定会导致崩溃。id key
应该是NSString *key
才能分配给它
label.text
。您至少需要[cell.contentView addSubView:label];
。