2012-01-11 80 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