Конвертировать NSString для получения синтезированной информации - PullRequest
0 голосов
/ 28 февраля 2011
//COPY THIS CODE IN A FRESH PROJECT!!!

//THIS 2 LINES ARE JUST EXAMPLES, OF VALUES PUSHES OUT A DATABASE
NSString *messagelevel1 = @"45";
NSString *currentlevel = @"1";

NSString *HuidigLevel = currentlevel;
NSDecimalNumber *huidigleveldec = [[NSDecimalNumber alloc] initWithString: HuidigLevel];
float HuidigLevelRek = [huidigleveldec floatValue]; 

//HERE IS THE PROBLEM
NSString* LevelTotaal=[[NSString alloc] initWithFormat:@"messagelevel%.f",HuidigLevelRek];
NSString*result = LevelTotaal;
NSLog(@"%@",result);
// THE ABOVE RESULT SHOULD RETURN THE SAME VALUE AS THE NEXT (messagelevel1) LINE BUT IT RETURNS ONLY "messagelevel1" AND NOT THE VALUE!
NSLog(@"%@",messagelevel1); 

Я хочу, чтобы * строка результата велась как строка * huidiglevel и получала некоторую информацию, но поскольку LevelTotaal является строкой NSSt, она не получает эту информацию. Я действительно понятия не имел, где искать Google для этой проблемы, поиск документов для разработчиков тоже не помог. Может вы, ребята, можете мне помочь?

На самом деле второй NSLog возвращает значение, а первому NSLog просто возвращает messagelevel1. Расскажу вкратце;)

Надеюсь, вы, ребята, поняли, о чем я говорю!

1 Ответ

4 голосов
/ 28 февраля 2011

Я думаю, вы пытаетесь использовать переменные переменные, систему, которая не существует в Objective-C. В PHP вы можете использовать переменные :

$hello = 'abcdef';
$varName = 'hello';

print $$varName; // prints the value of $hello, which is 'abcdef'

Как и многие вещи в PHP, это не очень хороший способ разработки программного обеспечения. Вместо этого рассмотрите возможность использования чего-то вроде NSDictionary, это позволяет вам дать конкретным данным ключ .

NSMutableDictionary *aDict = [NSMutableDictionary dictionary];

[aDict setObject:[NSNumber numberWithFloat:4.5] forKey:@"messageLevel1"];

NSString *result = [aDict objectForKey:@"messageLevel1"];

Вы можете получить данные динамически, ключ может быть сгенерирован или получен во время выполнения.

Edit:

Вместо того, чтобы иметь переменные с именем messageLevel1, messageLevel2, messageLevel3 ... messageLeveln, просто используйте массив.

NSMutableArray *messageLevels = [NSMutableArray array];

[messageLevels addObject:@"1"];
[messageLevels addObject:@"45"];
[messageLevels addObject:@"123"];

NSString *result = [messageLevels objectAtIndex:HuidigLevelRek];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...