簡體   English   中英

數組和字典的兼容性

[英]Array and dictionary compatibility

在1.0版中,我使用NSMutableArray,在其中存儲NSNumbers之類的內容

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

用於存儲我的gameStatus。

在下一個版本(1.1)中,我想更新myArray like(通過在其中存儲字典)...

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

我認為您的意思是您正在某個時候將它們保存到磁盤,並且想要在升級后處理它們。 有很多方法可以解決此問題,但是對於此特定情況,我將建議以下方法:

  • 更改要保存的文件的名稱,以包括版本號(savedata-1.1.plist)。
  • 啟動時,查找新版本的文件名。 如果不存在,請尋找舊文件名。 如果存在,請使用舊規則加載它,轉換數據,以新名稱重新保存,然后刪除舊文件。

當您轉到v1.2並再次更改數據時,這可以很好地擴展。 您將需要永遠或多或少地保持“如何閱讀v1.0”代碼(或者至少直到完全放棄從1.0升級的支持),但是在任何情況下都是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM