2015-12-08 1 views
-1

У меня есть NSArray, который выглядит, как этотNSAarry к NSDictionary

NSDictionary *dataDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 
NSLog(@"main: %@", [dataDict valueForKey:@"main"]); 
main: [{"city": "dallas", "description": "this is my test description"}] 

И я пытаюсь превратить его в NSDictionary так что я получаю получить элемент как [mainDict [email protected]"city"]

Так что я попробовал этот

NSLog(@"%@", [[mainArray objectAtIndex:0] objectForKey:@"city"]); 

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

[__NSCFString objectAtIndex:]: unrecognized selector sent to instance 

Как я могу сделать NSAarry в NSDictionary?

Благодаря

+0

стоимости для ключа –

+0

@DevangGoswami Я получил ту же ошибку – spenf10

+0

mainArray является строкой не массив так, пожалуйста, сначала преобразовать его в массив, а затем сделать свой код. Он будет работать отлично –

ответ

-3
NSArray *mainArray = @[@{@"city":@"dallas", @"description":@"this is my test description"}]; 
NSLog(@"%@", [[mainArray objectAtIndex:0] objectForKey:@"city"]); 

нет проблем ....

+0

см. Мое добавление, вот что я вижу, когда я регистрирую эти основные данные, я не определяю его таким образом. – spenf10

+0

mainArray - это NSString, а не NSArray, поэтому JSON не очень хорош, –

0

Создать цикл для списка, когда вы получите ответ в формате [{}, {}], что означает, что его список элементов. Или вы можете попросить своего разработчика API исправить ошибку.

Любые способы простое решение здесь:

for (NSDictionary *d in [dataDict valueForKey:@"main"]){ 
NSlog (@"%@",d); 
NSlog (@"%@",[d objectForKey :@"city"]); 
} 
+0

Это дает эту ошибку '[__NSCFString countByEnumeratingWithState: objects: count :]: непризнанный селектор, отправленный в экземпляр ' – spenf10

+0

для (NSDictionary * d в [[dataDict valueForKey: @" main "] objectAtIndex: 0]) –

+0

, когда я сделал это, он терпит неудачу в строке цикла for с этим' - [ __NSCFString objectAtIndex:]: непризнанный селектор, отправленный в экземпляр ' – spenf10

0

говорит Ваша ошибка mainarray не NSArray, это NSString. Поэтому, пожалуйста, проверьте, как этот

NSDictionary *dataDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 
    NSLog(@"main: %@", [dataDict valueForKey:@"main"]); 


    if ([[dataDict valueForKey:@"main"] isKindOfClass:[NSArray class]]) { 

     NSArray *mainArray = [dataDict valueForKey:@"main"]; 

     NSLog(@"City == %@",[[mainArray objectAtIndex:0] objectForKey:@"city"]); 
    }else{ 
     NSLog(@"mainarray is kind of -> %@", NSClassFromString([dataDict valueForKey:@"main"])); 
    }