为什么我滚动显示plist数据的tableview后我的应用程序崩溃了?

时间:2012-06-13 16:01:12

标签: ios xcode plist automatic-ref-counting tableview

我将数据加载到tableview,如下所示:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [tableData count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [[[tableData objectAtIndex: section] objectForKey: @"Rows"] count];
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    return [[tableData objectAtIndex: section] objectForKey: @"Title"];
}

- (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];
    }

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

    return cell;
}

我的viewDidLoad

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableData = [NSArray arrayWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"data" ofType: @"plist"]];
}

我使用ARC模式

修改

我的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>
            <string>Section1 Item1</string>
            <string>Section1 Item2</string>
        </array>
    </dict>
    <dict>
        <key>Title</key>
        <string>Section2</string>
        <key>Rows</key>
        <array>
            <string>Section2 Item1</string>
            <string>Section2 Item2</string>
        </array>
    </dict>
</array>
</plist>

2 个答案:

答案 0 :(得分:0)

这个tableData是NSDictionary:

 - (void)viewDidLoad {
  [super viewDidLoad];

  self.tableData = [NSDictionary dictionaryWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"data" ofType: @"plist"]];

}

使用tableData在tableView中提供值并相应地更改tableViewDelegate和datasource

答案 1 :(得分:0)

首先在didLoad

中执行此操作
NSString *dataStr = [NSDictionary dictionaryWithContentsOfFile: [[NSBundle mainBundle]
                                               pathForResource: @"data" ofType: @"plist"]];

将其添加到NSDictionary:

NSDictionary *dataDict = [[NSDictionary alloc] initWithContentsOfFile:dataStr];

将字典添加到NSArray:

NSArray *dataArray = [dataDict allKeys]

最后:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

通过执行以下操作填充表格:

 NSString *data = [dataArray objectAtIndex:[indexPath row]];
 [[cell textLabel] setText:data];