簡體   English   中英

NSDictionary到NSMutableArray

[英]NSDictionary to NSMutableArray

這是我的API響應-

{"kitchen":"3","bath":"5","lanundry":"0","dining":"0","bedroom":"0"}

我已將其加載到NSDictionary並且可以使用以下鍵檢索值:

NSDictionary *pdata = [NSJSONSerialization JSONObjectWithData: data options:NSJSONReadingMutableContainers error:nil];    
[pdata objectForKey:@"dining"]

我想將dictionary對象添加到NSMutableArray但是即使添加了五個記錄,它也會用最后一個覆蓋所有數組值。

itemsA=[[NSMutableArray alloc] init];


imgCount *img=[[imgCount alloc] init];

 if([pdata objectForKey:@"kitchen"])
    {

       [img setCount:[pdata objectForKey:@"kitchen"]];
       [img setDesc:@"Kitchen"];

       [itemsA addObject:img];
    }
 if([pdata objectForKey:@"bath"])
    {
       [img setCount:[pdata objectForKey:@"bath"]];
       [img setDesc:@"Bathroom"];
       [itemsA addObject:img];
     }
 if([pdata objectForKey:@"lanundry"])
     {
        [img setCount:[pdata objectForKey:@"lanundry"]];
        [img setDesc:@"Laundry"];
        [itemsA addObject:img];
      }
 if([pdata objectForKey:@"dining"])
      {
         [img setCount:[pdata objectForKey:@"kitchen"]];
         [img setDesc:@"Kitchen"];
         [itemsA addObject:img];
       }
  if([pdata objectForKey:@"bedroom"])
      {
        [img setCount:[pdata objectForKey:@"bedroom"]];
        [img setDesc:@"Bedroom"];
        [itemsA addObject:img];
      }

我的表格視圖顯示5個行的最后一個值-

Bedroom (0)

但是我想要這樣的結果

{"desc":"bathroom","count":"0"}, {"desc":"dining","count":"3"}

為此,您可以嘗試這樣。 首先獲取字典的所有鍵,然后使用該鍵數組創建字典數組。

NSArray*keys=[dict allKeys];
NSMutableArray *array = [[NSMutableArray alloc] init];
for (NSString *key in keys) {
    NSDictionary *dic = @{ @"desc":key, @"count": [dict objectForKey:key] };
    [array addObject:dic];
}
NSLog(@"Array - %@",array);

編輯:如果您想要自定義類對象,您可以嘗試這樣。

 for (NSString *key in keys) {
    imgCount *imgObject=[[imgCount alloc] init];
    [imgObject setCount:[pdata objectForKey:key]];
    [imgObject setDesc:[key capitalizedString]];        
    [array addObject:imgObject];
}

代碼的問題是,您僅創建一個img對象並重新使用它。 由於所有對象都是通過Objective-C的引用訪問的,因此您需要在所有if條件下創建單獨的img對象。 嘗試這個

itemsA=[[NSMutableArray alloc] init];

 if([pdata objectForKey:@"kitchen"])
    {
       imgCount *img=[[imgCount alloc] init];
       [img setCount:[pdata objectForKey:@"kitchen"]];
       [img setDesc:@"Kitchen"];

       [itemsA addObject:img];
    }
 if([pdata objectForKey:@"bath"])
    {
       imgCount *img=[[imgCount alloc] init];
       [img setCount:[pdata objectForKey:@"bath"]];
       [img setDesc:@"Bathroom"];
       [itemsA addObject:img];
     }
 if([pdata objectForKey:@"lanundry"])
     {
        imgCount *img=[[imgCount alloc] init];
        [img setCount:[pdata objectForKey:@"lanundry"]];
        [img setDesc:@"Laundry"];
        [itemsA addObject:img];
      }
 if([pdata objectForKey:@"dining"])
      {
         imgCount *img=[[imgCount alloc] init];
         [img setCount:[pdata objectForKey:@"kitchen"]];
         [img setDesc:@"Kitchen"];
         [itemsA addObject:img];
       }
  if([pdata objectForKey:@"bedroom"])
      {
        imgCount *img=[[imgCount alloc] init];
        [img setCount:[pdata objectForKey:@"bedroom"]];
        [img setDesc:@"Bedroom"];
        [itemsA addObject:img];
      }

嘗試執行此操作,以將所有字典鍵都放入NSMutable Array中。

NSArray*keys=[dict allKeys];
NSMutableArray *mutableArray = [keys mutableCopy];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM