NSDictionary из NSDictionaries - PullRequest
       2

NSDictionary из NSDictionaries

1 голос
/ 07 ноября 2011

У меня проблемы со следующим кодом для создания NSDictionary NSDictionaries. Нет ошибки компиляции, но во время выполнения происходит сбой в этом коде.

NSDictionary *section0 = [NSDictionary dictionaryWithObjectsAndKeys:
                            [NSDictionary dictionaryWithObjectsAndKeys:
                                @"Caller ID", @"label",
                                @"name", @"field",
                                @"Call", @"fieldType", nil
                            ], 0,
                            [NSDictionary dictionaryWithObjectsAndKeys:
                                @"Number", @"label",
                                @"number", @"field",
                                @"Call", @"fieldType", nil
                            ], 1,
                            nil
                         ];

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

Ответы [ 2 ]

9 голосов
/ 07 ноября 2011

Ваши ключи также должны быть объектами.(В дополнение к значениям.) В качестве ключей вы используете типы 0 и 1 int.Вместо этого вы должны использовать следующее:

[NSNumber numberWithInt:0];

Таким образом, код вашего словаря будет выглядеть так:

NSDictionary *section0 = [NSDictionary dictionaryWithObjectsAndKeys:
                            [NSDictionary dictionaryWithObjectsAndKeys:
                                @"Caller ID", @"label",
                                @"name", @"field",
                                @"Call", @"fieldType", nil
                            ], [NSNumber numberWithInt:0],
                            [NSDictionary dictionaryWithObjectsAndKeys:
                                @"Number", @"label",
                                @"number", @"field",
                                @"Call", @"fieldType", nil
                            ], [NSNumber numberWithInt:1],
                            nil
                         ];
0 голосов
/ 09 сентября 2013

Использовать литералы:

NSNumber *number = @0 ; // equal [NSNumber numberWithInt:0]

В вашем коде:

NSDictionary *section0 = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSDictionary dictionaryWithObjectsAndKeys:
                             @"Caller ID", @"label",
                             @"name", @"field",
                             @"Call", @"fieldType", nil
                         ], @0,
                         [NSDictionary dictionaryWithObjectsAndKeys:
                             @"Number", @"label",
                             @"number", @"field",
                             @"Call", @"fieldType", nil
                         ], @1,
                         nil
                     ];
...