nsstring赋值问题

时间:2012-01-11 00:35:06

标签: objective-c xcode nsstring variable-assignment

我正在制作一款玩家使用汽车的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";
}

2 个答案:

答案 0 :(得分:2)

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

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

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

示例设置:

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

检索示例:

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

答案 1 :(得分:0)

你说carColor被分配给了正确的东西。那么为什么不绕过carColor并直接将currentCarImage分配给stringWithContentsOfFile: