[英]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.