Приложение падает, когда я создаю NSDictionary с целым числом как Object

Всегда, когда я пытаюсь установить целое число как Объект в NSDictionary, программа вылетает без сообщения (ничего в консоли). Что не так в этом коде?

NSString *string = @"foo";
int number = 1;

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                        string, @"bla1", number, @"bla2",nil];

Ответы

Ответ 1

Используйте NSNumber вместо raw int:

Современный Objective-C:

NSString *string = @"foo";
NSNumber *number = @1;

NSDictionary *params = @{@"bla1": string, @"bla2": number};

Старый стиль:

NSString *string = @"foo";
NSNumber *number = [NSNumber numberWithInt:1];

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                    string, @"bla1", number, @"bla2",nil];

Ответ 2

В словаре вы должны хранить объекты, а не первичные типы, такие как int, char и т.д.