2015-11-30 2 views
1

Я пытаюсь добавить данные aDict в myData (NSMutable Array), но не могу его добавить. когда я пытаюсь распечатать его (myData). Он печатает нуль.Как добавить данные NSDictionary в NSMutable Array?

for (NSDictionary *aDict in responseArray){ 
    NSLog(@"%@", aDict[@"brand"]); 
    myData[count]=aDict[@"brand"]; 
} 
NSLog(@"%@",myData[2]); 

Мои данные в формате

{ 
"data": [ 
    { 
     "brand": "AMANTE", 
     "brand_id": 216, 
     "size": "XL", 
     "size_id": 78, 
     "url_path": "brands-1.html?brand=216&size=78" 
    }, 
    { 
     "brand": "PENNY", 
     "brand_id": 1349, 
     "size": "LARGE", 
     "size_id": 54, 
     "url_path": "brands-1.html?brand=1349&size=54" 
    }, 
    { 
     "brand": "TRIUMPH", 
     "brand_id": 58, 
     "size": "LARGE", 
     "size_id": 54, 
     "url_path": "brands-1.html?brand=58&size=54" 
    }, 
    { 
     "brand": "BENETTON", 
     "brand_id": 2519, 
     "size": "LARGE", 
     "size_id": 54, 
     "url_path": "brands-1.html?brand=2519&size=54" 
    }, 
    { 
     "brand": "HANES", 
     "brand_id": 446, 
     "size": "LARGE", 
     "size_id": 54, 
     "url_path": "brands-1.html?brand=446&size=54" 
    }, 
    { 
     "brand": "JOCKEY", 
     "brand_id": 60, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=60&size=76" 
    }, 
    { 
     "brand": "LOVABLE", 
     "brand_id": 59, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=59&size=76" 
    }, 
    { 
     "brand": "HANES", 
     "brand_id": 446, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=446&size=76" 
    }, 
    { 
     "brand": "ENAMOR", 
     "brand_id": 56, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=56&size=76" 
    }, 
    { 
     "brand": "BIARA", 
     "brand_id": 2480, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=2480&size=76" 
    }, 
    { 
     "brand": "PENNY", 
     "brand_id": 1349, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=1349&size=76" 
    }, 
    { 
     "brand": "TRIUMPH", 
     "brand_id": 58, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=58&size=76" 
    }, 
    { 
     "brand": "LIBERTINA", 
     "brand_id": 4167, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=4167&size=76" 
    }, 
    { 
     "brand": "INNER SENSE", 
     "brand_id": 3685, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=3685&size=76" 
    }, 
    { 
     "brand": "ANITA", 
     "brand_id": 3919, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=3919&size=76" 
    }, 
    { 
     "brand": "ADIRA", 
     "brand_id": 2584, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=2584&size=76" 
    }, 
    { 
     "brand": "COUCOU", 
     "brand_id": 2008, 
     "size": "40B", 
     "size_id": 76, 
     "url_path": "brands-1.html?brand=2008&size=76" 
    }, 
    { 
     "brand": "362436", 
     "brand_id": 2119, 
     "size": "XL", 
     "size_id": 78, 
     "url_path": "brands-1.html?brand=2119&size=78" 
    } 
], 
"status": "success" 
} 

Я хочу только "бренд" в моем NSMutable массиве * MyData.

+0

'для (NSDictionary * aDict в responseDictionary [ "данные"]) {...}' , поскольку у вас есть объект root, который вы просто игнорируете, я думаю. – holex

ответ

1

попробовать как

если массив из словаря содержит ключ data, вы можете получить доступ непосредственно

NSMutableArray *addarra = [NSMutableArray new]; 

for (NSDictionary *aDict in responseArray){ 
    NSMutableDictionary *temp = [NSMutableDictionary new]; 
    [temp setObject:aDict[@"brand"] forKey:@"brand"]; 
    [addarra addobject:temp]; 

} 

Retereive

NSString *brand = [[addarra objectAtIndex:i]ObjectForKey:@"brand"]; 
1

Если результат печати имеет нулевое значение, это означает, что вы не создали «mydata» NSMutableArray. Вот мой код.

NSDictionary *dict = @{@"data":@[ 
            @{ 
             @"brand": @"AsafdsadfsdANTE", 
             @"brand_id": @216, 
             @"size": @"XL", 
             @"size_id": @78, 
             @"url_path": @"brands-1.html?brand=216&size=78" 
             },@{ 
             @"brand": @"UYTIT", 
             @"brand_id": @216, 
             @"size": @"XL", 
             @"size_id": @78, 
             @"url_path": @"brands-1.html?brand=216&size=78" 
             },@{ 
             @"brand": @"sFASDSADF", 
             @"brand_id": @216, 
             @"size": @"XL", 
             @"size_id": @78, 
             @"url_path": @"brands-1.html?brand=216&size=78" 
             },@{ 
             @"brand": @"GERWW", 
             @"brand_id": @216, 
             @"size": @"XL", 
             @"size_id": @78, 
             @"url_path": @"brands-1.html?brand=216&size=78" 
             }, 

            ], 
          @"status":@"success" 

          }; 
    NSMutableArray *myData = [NSMutableArray arrayWithObjects:@"A",@"B",@"C", nil]; 
    NSArray *data = dict[@"data"]; 
    for (NSDictionary *dict in data) { 
     NSString *brand = dict[@"brand"]; 
     NSLog(@"%@",brand); 
     [myData addObject:brand]; 
    } 
    NSLog(@"%@",myData); 
1

список brand значений

самый простой способ:

NSArray *_brands = [responseArray[@"data"] valueForKeyPath:@"brand"]; 

, который будет дает вам массив, который имеет все значения, но один бренд может быть несколько раз в окончательный сбор, поэтому, если, например, TRIUMPH бренды два раза в исходном источнике данных, что будет два раза в массиве _brands.


каждые brand значения только один раз

вы можете сделать это:

NSArray *_brands = [[NSSet setWithArray:[responseArray[@"data"] valueForKeyPath:@"brand"]] allObjects]; 

или даже что:

NSArray *_brands = [responseArray[@"data"] valueForKeyPath:@"@distinctUnionOfObjects.brand"]; 

в обеих случаях, каждый бренд будет только один раз в вашем массиве _brands, например, например TRIUMPH, хотя это происходит два раза, он будет только один раз в выходной коллекции, независимо от того, сколько раз источник данных имеет одинаковое значение; вы можете использовать то, что вы предпочитаете лучше или имеет смысл для вашего проекта.


изменяемая коллекция

если вам нужны действительно изменяемая коллекция в конце:

NSMutableArray *_mutableBrands = [_brands mutableCopy]; 
Смежные вопросы