2013-09-03 3 views
2

У меня есть массив, и я хочу разбить этот массив на 3 части или 3 массива.Разделить массив на три отдельных массива

первый массив содержит -> AppName
второй массив содержит -> Описание
третий массив содержит -> Иконка

Вот массив JSON Я хочу, чтобы разделить,

Deviceinfo = (
       { 
      Appname = App; 
      Description = "This is test app"; 
      Icon = "57.png"; 
     } 
    ); 
} 

Вот мой код для этого,

NSMutableArray *firstArray = [NSMutableArray array]; 
NSMutableArray *secondArray = [NSMutableArray array]; 
NSMutableArray *thirdArray = [NSMutableArray array]; 

for (int i = 0; i < [json count]; i++) { 
    NSArray *tempArray = [[json objectAtIndex:i]componentsSeparatedByString:@""]; 
    [firstArray addObject:[tempArray objectAtIndex:0]]; 
    [secondArray addObject:[tempArray objectAtIndex:1]]; 
    if ([tempArray count] == 3) 
    { 
     [thirdArray addObject:[tempArray objectAtIndex:2]]; 
    } 
} 
NSLog(@"yourArray: %@\nfirst: %@\nsecond: %@\nthird: %@", json, firstArray, secondArray, thirdArray); 

Я наблюдаю сбой в коде в этой строке

NSArray *tempArray = [[json objectAtIndex:i]componentsSeparatedByString:@""]; 

Я не понимаю, что здесь происходит. Любые указатели для решения этой проблемы?

+0

Вы не массив JSON. То, что вы разместили, - это один словарь с одной парой ключ/значение. Значение представляет собой массив, содержащий один словарь. Внутренний словарь содержит 3 пары ключ/значение. – rmaddy

ответ

1

Я думаю, что вы можете, используя ниже код я надеюсь, что это поможет ты: -

NSMutableArray *firstArray = [NSMutableArray array]; 
NSMutableArray *secondArray = [NSMutableArray array]; 
NSMutableArray *thirdArray = [NSMutableArray array]; 

NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData: jsonResponse options: NSJSONReadingMutableContainers error: &e]; 

//here is first i load with Dicutionary bcz if into your Json you have may be multiple Dictuionary so you then you can load purticular dictionary as bellow line 

EDIT

NSArray * responseArr = jsonArray[@"Deviceinfo"]; 

    firstArray = [responseArr valueForKey:@"Appname"]; 
    secondArray = [responseArr valueForKey:@"Description"]; 
    thirdArray = [responseArr valueForKey:@"Icon"]; 

, если у вас есть несколько Deviceinfo словарь в свой Json, то вы могли бы использовать для петля

// NSArray * responseArr = jsonArray[@"Deviceinfo"]; 
//  for (NSDictionary *dict in responseArr) { 

//  [firstArray addObject:[dict valueForKey:@"Appname"]; 
//  [secondArray addObject:[dict valueForKey:@"Description"]; 
//  [thirdArray addObject:[dict valueForKey:@"Icon"]; 
//  } 
+0

спасибо @Nitin Gohel этот код отлично работает для меня – Jitendra

+0

@ H2CO3 thx для редактирования i уже дал ответ с 'valueForKey' –

+0

Не могли бы вы исключить цикл и сделать:' NSArray * firstArray = [responseArr valueForKey: @ "Appname"] ; '? – rmaddy

0
NSMutableArray *firstArray = [[NSMutableArray alloc]init]; 
NSMutableArray *secondArray = [[NSMutableArray alloc]init]; 
NSMutableArray *thirdArray = [[NSMutableArray alloc]init]; 

NSDictionary *list =[NSJSONSerialization JSONObjectWithData:data 
                   options:kNilOptions error:&error]; 

NSArray * tempArray = jsonArray[@"Deviceinfo"]; 
for (NSDictionary *list in tempArray) 
{ 
    [firstArray addObject:[list objectForKey:@"Appname"]; 
    [secondArray addObject:[list objectForKey:@"Description"]; 
    [thirdArray addObject:[list objectForKey:@"Icon"]; 
} 

Тогда попробуйте

NSLog(@"yourArray: %@\nfirst: %@\nsecond: %@\nthird: %@", tempArray, firstArray, secondArray, thirdArray); 
+0

'valueForKey:' (в нижнем регистре, кстати), это KVO , Чтобы получить доступ к объекту из словаря, вы должны использовать 'objectForKey:' вместо этого. – JustSid

+0

@JustSid, изменен, thnx для информации. – NAZIK

0
NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://url.to.your.json"]]; 

NSArray *jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil]; 

NSMutableArray *appNameArray = [NSMutableArray array]; 
NSMutableArray *discriptionArray = [NSMutableArray array]; 
NSMutableArray *iconArray = [NSMutableArray array]; 

for(NSDictionary *dictionary in jsonObjects) 
{ 
    [appNameArray adddObject:[dictionary valueForKey:@"Appname"]; 
    [appNameArray adddObject:[dictionary valueForKey:@"Description"]; 
    [appNameArray adddObject:[dictionary valueForKey:@"Icon"]; 
} 
+0

objcetforkey не работает ... – Jitendra

+0

не могли бы вы попробовать значениеForKey вместо objectForKey – abhishekkharwar

+2

@JitendraDeore О да, это ** делает ** работа. Код Apple отличается отличным качеством. Просто вы, возможно, не знаете, как правильно его использовать. Было бы полезно, если бы вы могли уточнить, как он «не работает», потому что мы не читаем читателей, и тогда мы могли бы * на самом деле помочь вам решить вашу проблему. –

Смежные вопросы