【发布时间】:2010-07-21 01:23:12
【问题描述】:
我有点难过,我希望有人能帮助我。我有一个 plist,它是一个字典数组。我正在尝试将其读入表格。 plist 如下所示:
<array>
<dict>
<key>sectionTitle</key>
<string>A</string>
<key>rowData</key>
<array>
<dict>
<key>Title</key>
<string>Albert Author</string>
<key>dText</key>
<string>text for detail view</string>
</dict>
<dict>
<key>Title</key>
<string>Antony Author</string>
<key>dText</key>
<string>Descriptive text for detail view</string>
</dict>
<dict>
<key>Title</key>
<string>Azerifiel Author</string>
<key>dText</key>
<string>Text for detail view</string>
</dict>
</array>
</dict>
<dict>
<key>sectionTitle</key>
<string>B</string>
<key>rowData</key>
<array>
<dict>
<key>Title</key>
<string>Barny Author</string>
<key>dText</key>
<string>text for detail view</string>
</dict>
<dict>
<key>Title</key>
<string>Bazle Author</string>
<key>dText</key>
<string>text for detail view</string>
</dict>
<dict>
<key>Title</key>
<string>Bruno Author</string>
<key>dText</key>
<string>text for detail view</string>
</dict>
</array>
</dict>
</array>
我的问题是:我可以制作一个相似的结构减去数组填充表格视图,但我不能使上面的代码与数组一起工作。我不确定如何处理代码中的数组,但我无法摆脱它们,因为我希望对最终表进行索引和分段。这是我的 viewDidLoad 方法中的代码。
- (void)viewDidLoad {
[super viewDidLoad];
// Path to the plist (in the application bundle)
NSString *path = [[NSBundle mainBundle] pathForResource:@"Tester" ofType:@"plist"];
// Build the array from the plist
NSArray *dictArray = [[NSArray alloc] initWithContentsOfFile:path];
NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
for(NSDictionary *dict in dictArray)
{
DictModel *term = [[DictModel alloc] init];
term.sectionTitle = [dict objectForKey:@"sectionTitle"];
term.Title = [dict objectForKey:@"Title"];
term.dText = [dict objectForKey:@"dText"];
[mutableArray addObject:term];
[term release];
}
tableDataSource = [[NSArray alloc] initWithArray:mutableArray];
[mutableArray release];
[dictArray release];
[super viewDidLoad];
}
我有一个名为 DictModel 的单独类,如下所示:
@interface DictModel : NSObject {
NSString *sectionTitle;
NSString *Title;
NSString *dText;
}
@property(nonatomic, retain) NSString *sectionTitle;
@property(nonatomic,retain) NSString *Title;
@property(nonatomic, retain) NSString *dText;
@end
我哪里错了?我尝试导入数组但无法正常工作。我想我在某个地方误解了一些东西。非常感谢您的建议。
这是我的行方法单元格。这可能是显示问题所在。我应评论员的要求添加了这个:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell.
DictModel *term = [tableDataSource objectAtIndex:indexPath.row];
cell.textLabel.text = term.Title;
cell.detailTextLabel.text = term.dText;
return cell;
}
【问题讨论】:
-
那么到底是什么问题呢?您目前是否遇到错误或只是需要指导如何在索引分组表中输出您的 plist?
-
我的表格显示为空白。但我知道它可以访问 plist,因为如果我将 rowAtIndex 方法指向它,它将显示 sectionTitle 字符串。总的来说,我目前正在尝试了解 plist 以及如何订购/加载它们。
-
您的表视图数据源方法是否被调用。
-
我认为有两个 [super viewdidLoad] 方法被调用。不确定这是否是一个错误。只是想指出
-
是的。我不是 100% 我做对了。我想我是,但我也知道我想用来填充 tableview 的字典包含在字典内的数组中。我需要以这种方式构造它,以便我可以拥有一个分段索引表,但这让我感到困惑。但没有混淆,没有学习曲线;-) 我已经在上面发布了表格日期源方法。
标签: iphone arrays dictionary plist