2012-01-24 3 views

ответ

15

Вы можете поместить любой тип объекта в NSDictionary. Таким образом, хотя @"fred" в порядке, 1 не является, поскольку целое число не является объектом. Если вы хотите поставить номер в словаре, завернуть его в NSNumber:

NSDictionary *header = { @"title": @"fred", @"count": @1 }; 
+2

Интересно. Я привык к C#, где все является объектом. Благодарю. – ChrisP

0

Не так, как у вас есть. Число 1 является примитивным, а объект NSArray может содержать только объекты. Создайте NSNumber для «1», а затем сохраните его.

0

NSDictionary может содержать только объекты Objective-C в нем (например, NSString и NSArray), он не может содержать примитивные типы, как int, float или char*. Учитывая эти ограничения, разнородные словари совершенно законны.

Если вы хотите, чтобы включать в себя ряд таких как 1 в качестве ключа или значения, вы должны обернуть его с NSNumber:

NSDictionary *header=[[NSDictionary alloc] initWithObjectsAndKeys: 
    @"fred", @"title", 
    [NSNumber numberWithInt:1], @"count", 
    nil]; 
0

Единственное требование состоит в том, что это является объектом. Это зависит от вас, чтобы правильно обрабатывать объекты в вашем коде, но, по-видимому, вы можете отслеживать их типы на основе ключей.

1 не является объектом. Если вы хотите, чтобы вы ввели номер в словарь, вы можете преобразовать его в NSNumber.