iOS保存数组状态

时间:2014-05-05 19:04:36

标签: ios objective-c arrays uitableview

我有一个iOS应用程序,它有一个tableView,它以JSON格式从服务器检索数据。 然后我有一个带有另一个tableview的模态视图,该视图显示了用户选择要在上一个屏幕中看到哪些选项的类别。 我保存在数组中检索的类别 - * categoriesArray。

我将类别数组过滤到新词典中,如下所示:

filterDictionary = [[NSMutableDictionary alloc]init];
             for (int i=0 ; i<[categoriesArray count] ; i++) {
                 [filterDictionary setObject:@"true" forKey:[categoriesArray objectAtIndex:i]];
             }

             NSLog(@"FilteredDict is: %@", filterDictionary);

这没关系。 当用户选择一行时,我将Object更改为false,以了解我是否应该显示该类别:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if ([[filterDictionary objectForKey:[categoriesArray objectAtIndex:indexPath.row]] isEqual:@"true"]) {
    [filterDictionary setObject:@"false" forKey:[categoriesArray objectAtIndex:indexPath.row]];
}
else {
    [filterDictionary setObject:@"true" forKey:[categoriesArray objectAtIndex:indexPath.row]];
}}

我的问题是,当我解除modalView时,如果我再次输入,一切都会像第一次一样开始,所以一切都设置为true,因为它必须再次检索类别列表。如果检索到的JSON中没有任何更改,我如何“保存”选择并检查它是否已被选中?

我不确定我是否正确解释自己...... 对不起,如果是的话,我会更加清楚。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

当您关闭模态视图控制器时,除非您保留一个强指针,否则它将被取消分配,因此当您“再次输入”时,您将转到新实例,而不是回到之前的实例。您应该在呈现它的控制器中为该控制器创建一个强属性。在进行演示之前,请检查该控制器是否存在,如果没有创建它(这将在您第一次出现时发生)然后呈现它,如果它存在,则只显示它。