我有一個在程序加載時創建的NSMutableArray。如果程序終止,我將數組保存到一個文件中。然後,當應用程序再次啓動時,我檢查該文件是否存在,如果存在,請將其作爲數組讀取。NSMutableArray字符串從文件中讀入後發生變化
問題是,在第一次創建時一切都很好,我檢查一個數組對象是否對應某個字符串,如果它相等,則執行一些操作。這工作很好,第一次去。但是,如果我從罰款中讀回數組,並且做相同的比較,即使它們都表示它們是相同的,但它並不這麼認爲,並且跳過了這個過程。代碼示例:
這是如果該文件不存在,從頭開始創建:
NSMutableArray *tmpArray=[[NSMutableArray alloc] initWithObjects:
@"1000",
@"1000",
@"1000",
@"500",
@"500",
@"500",
@"250",
@"250",
@"250",
@"100",
@"100",
@"100",
@"100",
@"TRIPLE",
@"TRIPLE",
@"DOUBLE",
@"DOUBLE",
@"- 500",
@"- 250",
@" - 250",
@"- 100",
@"- 100",
@"HALF",
@"BUST",
nil];
如果文件不存在:
pnames = [[NSMutableArray alloc] initWithContentsOfFile:myPath];
這裏就是比較進來:
NSString *strInfo;
strInfo = [pnames objectAtIndex: theInteger - 1];
NSLog(@"strInfo: %@", strInfo);
if (strInfo == @"DOUBLE")
{
//do something
}
就像我說過的,這個比較在第一次創建時工作得很好,但是當數組通過文件加載時沒有問題。
編寫出該文件是通過做:
(void)applicationWillTerminate:(UIApplication *)application {
[pnames writeToFile:[self saveFilePath] atomically:YES];
}
當我在調試器看strInfo(從上面),它顯示爲:
NSCFString - 0c8168 - DOUBLE ---從創作,並沒有認識到它作爲平等
NSCFString - 0x3d42af0 - DOUBLE ---當它沒有認識到它作爲平等的,通過文件加載
對此有何見解爲g非常感謝。
地理...
哦,呃 - 哈哈我應該得到的。好的答案+1 – 2010-02-06 23:25:36
它在第一次加載時是一個微妙的陷阱(現在解釋)。不客氣! – bbum 2010-02-06 23:34:02