我正在使用表格视图创建的应用程序。我可以立即添加新信息,将信息保存到plist,然后重新加载视图。新细胞及其数据显示在底部。然而,当我重新运行应用程序时,它会重新订购我最初看到它们的订单。
单元格的标题存储在名为countdowns
的变量中,描述存储在countdown_info
中。然后我使用这些变量并将它们作为字典存储在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
我添加的一些NSLog显示文件中的表保存为[代码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;
}
答案 0 :(得分:2)
NSDictionaries是unordered,因此在保存到NSUserDefaults时可能会丢失排序。您还必须以某种方式存储订单。有关一些想法,请参阅this thread。