代码之家  ›  专栏  ›  技术社区  ›  Chandan Shetty SP

数组和字典兼容性

  •  1
  • Chandan Shetty SP  · 技术社区  · 14 年前

    NSMutableArray *myArray;
    for(int i= 0 ; i < 10 ; i++)
    [myArray addObject:[NSNumber numberWithInt:i]];
    

    我的数组 比如(把字典放在里面)。。。

    NSMutableArray *myArray;
    for(int i= 0 ; i < 10 ; i++)
    {
        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
        [dict setValue:number forKey:@"index"];
        [dict setValue:[NSNumber numberWithBool:NO] forKey:@"isValid"];
        [myArray addObject:dict];
        [dict release];
    }
    

    我的问题是如何为以前的版本1.0提供兼容性。

    更新:我支持1.1版本,如下所示,可以吗。

    //Version 1.1 support
    //Read myArray
    
                if( [myArray count] > 0)
                {
                    if( ![[myArray objectAtIndex:0] isKindOfClass:[NSMutableDictionary class]])
                    {
                        for( NSNumber *number in myArray)
                        {
                            NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
                            [dict setValue:number forKey:@"index"];
                            [dict setValue:[NSNumber numberWithBool:NO] forKey:@"isValid"];
                            [dict release];
                        }
                    }
                }
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Rob Napier    14 年前

    我假设你的观点是,你正在保存这些磁盘在某个时候,你想处理后加载它们升级。有很多方法可以解决这个问题,但对于这种特殊情况,我建议如下:

    • 启动时,查找新版本的文件名。如果不存在,请查找旧文件名。如果存在,则使用旧规则加载,转换数据,以新名称重新保存,然后删除旧文件。

    当您进入v1.2并再次更改数据时,它可以很好地扩展。您将需要永远保留“how to read v1.0”代码(或者至少在您完全放弃对1.0升级的支持之前),但在任何情况下都是这样。