Ответ 1
Вы правы, NSNumber
- это нормальный способ справиться с этой ситуацией. Вы также можете использовать NSValue
или NSDecimalNumber
.
Как я понимаю, в Objective-C вы можете помещать объекты только в словари. Поэтому, если бы я создал словарь, он должен был бы иметь все объекты. Это означает, что мне нужно включить мои ints в NSNumber, правильно?
Soo...
NSNumber *testNum = [NSNumber numberWithInt:varMoney];
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:@"OMG, Object 1!!!!" forKey:@"1"];
[dictionary setObject:@"Number two!" forKey:@"2"];
[dictionary setObject:testNum forKey:@"3"];
NSNumber *retrieved = [dictionary objectForKey:@"3"];
int newVarMoney = [retrieved intValue];
Где varMoney - это int, который был объявлен ранее. Мой вопрос в том, есть ли лучший способ хранить "int" в словаре, чем помещать его в NSNumber?
Спасибо!
Изменить: 04/25/13
Прошло много времени с тех пор, как я задал этот вопрос. Для людей, которые наткнулись на него в будущем, есть более простые способы сделать это с помощью Apple LLVM Compiler 4.0, который по умолчанию используется в Xcode. (АРК)
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:@1337 forKey:@"1"];
Чтобы он быстро создал объекты NSNumber, используйте синтаксис @1337. Работает с переменными, поэтому мое выше может стать:
[dictionary setObject:@(varMoney) forKey:@"3"];
или
dictionary[@"mykey"] = @1337;
Simpler.
Вы правы, NSNumber
- это нормальный способ справиться с этой ситуацией. Вы также можете использовать NSValue
или NSDecimalNumber
.
Если вы готовы вернуться к использованию Core Foundation (CFDictionaries), вы можете хранить все, что захотите. Я определенно сделал словари, в которые я помещал произвольные значения void *.
Вам нужно сделать немного больше сантехники, но не так много, и все это задокументировано.
Извините, но нет:( Не насколько я знаю. Причина в том, что целые числа не являются объектами, а NSDictionary
хранит только объекты.