2012-01-11 2 views
1

У меня есть словарь экземпляр объявлен в PageOneView.h:NSDictionary метод AllKeys падает после JSON сериализации в прошивкой

@interface PageOneView : UIViewController <UITableViewDataSource, 
              UITableViewDelegate, 
              UITextFieldDelegate> 
{ 
    NSDictionary *orderDetailsDictionary ; 
} 
@property (nonatomic, retain)NSDictionary *orderDetailsDictionary; 

я синтезировать его в PageOneView.m:

@implementation PageOneView 

@synthesize orderDetailsDictionary; 

я инициализировать его с объектом, возвращаемого JSONSerialization класс. (orderDetailsJSON является JSON строки я прочитал из веб-службы) Эта линия заимствована из примера кода компании Apple:

orderDetailsDictionary = [NSJSONSerialization JSONObjectWithData: 
[orderDetailsJSON dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]; 

Далее я пытаюсь получить первый ключ.

NSString *valString = [NSString stringWithFormat: 
      @"%@\n", [[orderDetailsDictionary allKeys] objectAtIndex:0]]; 

allKeys падает здесь с Program received signal: EXC_BAD_ACCESS. выходной экран показывает:

-[__NSCFArray allKeys]: unrecognized selector sent to instance 0x6a211d0 
+0

Вы получаете массив не словаря из вашей Json анализатор. NSArray не отвечает на allKeys. – Rog

ответ

3

Очевидно, orderDetailsDictionary не NSDictionary, а NSArray. Вы должны проверить данные, поступающие с вашего сервера.

0

Попробуйте это:

orderDetailsDictionary = (NSDictionary *)[yourArray objectAtIndex:0]; 

NSString *valString = [NSString stringWithFormat: @"%@\n", [orderDetailsDictionary objectForKey:0]]; 
Смежные вопросы