我正在制作一款玩家使用汽车的iPhone应用程序。我希望玩家能够保存他们想要使用哪种车颜色的设置。当我读取存储播放器汽车颜色的文件时,我的全局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";
}
答案 0 :(得分:2)
未显示您“存储玩家汽车颜色的时间”。
猜测你试图将它写入应用程序包,但这不可写。
写入应用程序的Document目录或更简单地使用NSUserDefaults。
示例设置:
[[NSUserDefaults standardUserDefaults] setObject:carColor forKey:@"carColor"];
检索示例:
NSString *carColor = [[NSUserDefaults standardUserDefaults] stringForKey:@"carColor"];
答案 1 :(得分:0)
你说carColor
被分配给了正确的东西。那么为什么不绕过carColor
并直接将currentCarImage
分配给stringWithContentsOfFile:
?