Проблемы с назначением nsstring - PullRequest
0 голосов
/ 11 января 2012

Я делаю приложение для 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]];
    }

Но это тоже не сработало. Есть идеи?

EDIT: Мне удалось заставить это работать таким образом, но это все еще не очень удовлетворительно. Я изменил свой код на это:

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 ]

2 голосов
/ 11 января 2012

Не показан час, когда вы «сделали, чтобы сохранить цвет автомобиля игрока».

Догадываясь, что вы пытались записать его в комплект приложения, но это невозможно записать.

Либо запишите вКаталог документов приложения или более простое использование NSUserDefaults.

Пример настройки:

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

Пример получения:

NSString *carColor = [[NSUserDefaults standardUserDefaults] stringForKey:@"carColor"];
0 голосов
/ 11 января 2012

Вы говорите, что carColor назначается на нужную вещь.Так почему бы не обойти carColor и напрямую присвоить currentCarImage stringWithContentsOfFile:?

...