是什么导致表格单元格以随机/未知模式显示?

问题描述

| 我正在创建的应用程序将以表格视图启动。我可以立即添加新信息,将信息保存到plist中,然后重新加载视图。新单元格及其数据显示底部。但是,当我重新运行该应用程序时,它会重新排列我最初看到它们的顺序。 单元格的标题存储在名为“ 0”的变量中,描述存储在“ 1”中。然后,我使用这些变量并将它们作为字典存储在plist中。 这是一个每次都具有相同结果的示例。下面是表格视图,如果我刚刚添加了4个新单元格,它将显示该表格视图:
**[CODE 1]**
Countdown 1
  Description 1
Countdown 2
  Description 2
Countdown 3
  Description 3
Countdown 4
  Description 4
但是,当应用程序重新运行/重新生成时,应用程序将对此打开:
**[View After Re-Run]**
Countdown 4
  Description 4
Countdown 1
  Description 1
Countdown 3
  Description 3
Countdown 2
  Description 2
添加的一些NSLogs显示文件中的表另存为[Code 1],并且表视图上的indexPath.row从0-3增加,但是由于某种原因,该视图以不同的模式进行了重组。 这是什么原因?谢谢! 来自cellRowAtIndexPath的代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static Nsstring *CellIdentifier = @\"Cell\";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@\"Cell\"] autorelease];
}

ClockworkAppDelegate *dataCenter = (ClockworkAppDelegate *)[[UIApplication sharedApplication] delegate];

cell.textLabel.text = [[dataCenter countdowns] objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [[dataCenter countdown_info] objectAtIndex:indexPath.row];

cell.accessoryType = UITableViewCellAccessorydisclosureIndicator;

return cell;
}
    

解决方法

        NSDictionaries是无序的,因此当保存到NSUserDefaults时,您可能会丢失排序。您还必须以某种方式存储订单。请参阅此主题以获取一些想法。