我有一个在程序加载时创建的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