Значение Objective-C для ключа - PullRequest
3 голосов
/ 26 декабря 2010

Я использую NSDictionary для хранения заданных значений, и я пытаюсь присвоить их двойным.Однако я не уверен, что делать, valueforkey возвращает идентификатор, который является указателем.Я попытался с помощью '*' получить фактическое значение, но это не работает.

Это код

tempBrain.operand = [variables valueForKey:[(NSString*)obj  stringByReplacingOccurencesOfString:VARIABLE_PREFIX  withString:@""]];

tempBrain.operand - метод установки для двойной переменной.Переменные - это мой NSDictionary.

Ответы [ 3 ]

6 голосов
/ 26 декабря 2010

Предполагая, что сохраненное значение равно NSNumber, вы можете использовать doubleValue следующим образом:

tempBrain.operand = [[variables objectForKey:[(NSString*)obj  stringByReplacingOccurencesOfString:VARIABLE_PREFIX  withString:@""]] doubleValue];

Обратите внимание, что я изменил valueForKey на objectForKey, что является правильным методом для получения объекта из NSDictionary.

1 голос
/ 26 декабря 2010

NSDictionary может содержать только объекты подклассов NSObject.

Попробуйте сделать это:

NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:10];

// Add object
[dic setObject:[NSNumber numberWithDouble:3.0] forKey:@"Third"];

// Read object
double val = [[dic objectForKey:@"Third"] doubleValue];
0 голосов
/ 26 декабря 2010

Я получил его сейчас, он возвращает объект, поэтому я должен отправить ему сообщение doubleValue.

...