2012-01-11 45 views
0

我正在制作一个iPhone应用程序,玩家使用汽车。我希望玩家能够保存他们想要使用的汽车颜色的设置。当我读取我用来存储玩家汽车颜色的文件时,我的全局NSString变量不会更改值。这里是我的代码:nsstring赋值问题

NSString *carColor; 
    NSString *filePath2 = [[NSBundle mainBundle] pathForResource:@"carColor" ofType:@"txt"]; 
    if(filePath2){ 
     carColor = [NSString stringWithContentsOfFile:filePath2 encoding:NSUTF8StringEncoding error:NULL]; 
    } 
    currentCarImage = [NSString stringWithString:carColor]; 

变量carColor被分配了正确的事情,但是当我看到在调试器它说,currentCarImage是一个空字符串。如果我要把这个:

currentCarImage = @"greenCar.png"; 

它会工作得很好。我甚至试过这个:

NSString *filePath2 = [[NSBundle mainBundle] pathForResource:@"carColor" ofType:@"txt"]; 
    if(filePath2){ 
     currentCarImage = [NSString stringWithString:[NSString stringWithContentsOfFile:filePath2 encoding:NSUTF8StringEncoding error:NULL]]; 
    } 

但是这也没有奏效。有任何想法吗?

编辑: 我设法让它工作,但它仍然不是很满意。我将我的代码更改为:

NSString *carColor; 
NSString *filePath2 = [[NSBundle mainBundle] pathForResource:@"carColor" ofType:@"txt"]; 
if(filePath2){ 
    carColor = [NSString stringWithContentsOfFile:filePath2 encoding:NSUTF8StringEncoding error:NULL]; 
} 
if([carColor isEqualToString:@"greenCar.png"]){ 
    currentCarImage = @"greenCar.png"; 
} 
if([carColor isEqualToString:@"blueCar.png"]){ 
    currentCarImage = @"blueCar.png"; 
} 
if([carColor isEqualToString:@"redCar.png"]){ 
    currentCarImage = @"redCar.png"; 
} 
if([carColor isEqualToString:@"purpleCar.png"]){ 
    currentCarImage = @"pupleCar.png"; 
} 
if([carColor isEqualToString:@"yellowCar.png"]){ 
    currentCarImage = @"yellowCar.png"; 
} 
if([carColor isEqualToString:@"turquoiseCar.png"]){ 
    currentCarImage = @"turquoiseCar.png"; 
} 
+1

没有stingWithString'的'点,只是'currentCarImage = [NSString的stringWithContentsOfFile:FILEPATH2编码:NSUTF8StringEncoding错误:NULL];'足够了。建议:花时间知道你为什么写代码。 – zaph 2012-01-11 00:41:16

+0

尝试过,但不幸的是,似乎没有工作 – 2012-01-11 00:46:57

+0

该值打印为空字符串还是“(null)”? – 2012-01-11 00:49:01

回答

0

你说carColor被分配给正确的东西。那么为什么不绕行carColor并直接分配currentCarImagestringWithContentsOfFile:

+0

试过,但不幸的是,似乎并不工作 – 2012-01-11 00:45:59

2

未显示是您“用来存储玩家汽车颜色的时间”。

猜测你试图将它写入应用程序包但不可写。

要么写入应用程序的Document目录,要么更简单地使用NSUserDefaults。

实施例设置:

[[NSUserDefaults standardUserDefaults] setObject:carColor forKey:@"carColor"]; 

实施例中检索:

NSString *carColor = [[NSUserDefaults standardUserDefaults] stringForKey:@"carColor"]; 
+0

你问我如何存储玩家的汽车颜色?如果是这样,我正在使用应用程序包中的文本文件。就像我说的颜色被正确读取一样,问题是将它分配给字符串。 – 2012-01-11 00:45:14

+0

我不明白你的意思是在文本文件中的文本正在检索罚款 – 2012-01-11 00:52:01