我正在一個目標C應用程序,我正在採取JSON數據,我需要插入此數據(日期)內字典fillDefaultColors。我fillDefaultColors應該是格式如下:目標C NSDictionary JSON在一行
self.fillDefaultColors = @{ @"2017/06/18":greenColor,
@"2017/06/19":orangeColor,
@"2017/06/20":greenColor,
...
};
,但是當我在控制檯日誌打印它們分別在不同的行和應用程序,我可以從JSON
2017-06-19 15:30:12.310 CalendarTest[1905:364525] {
"2017/06/20" = "greenColor";
}
2017-06-19 15:30:12.311 CalendarTest[1905:364525] {
"2017/06/18" = "orangeColor";
}
所以看顏色只爲最後一個項目在應用我看到最後日期背景控制檯2017年6月18日
這裏是我的代碼
NSError *error = nil;
NSURL *url = [NSURL URLWithString: @"http://..."];
NSData *data = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&error];
if(!error)
{
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error:&error];
NSMutableArray *array= [json objectForKey:@"horses"];
for(int i=0; i< array.count; i++)
{
NSDictionary *horsedata = [array objectAtIndex:i];
NSString *date = [horsedata objectForKey:@"date"];
NSNumber *averagetemp = [horsedata objectForKey:@"averagetemperature"];
if([averagetemp isEqual:@(28)]) {tempColor = greenColor;} else {
tempColor = orangeColor;
}
self.fillDefaultColors = @{date: tempColor};
NSLog(@"%@", _fillDefaultColors);
}
}
JSON: {"horses":[{"id":1,"name":"Horse","date":"2017/06/17","averagetemperature":28},{"id":1,"name":"Horse","date":"2017/06/18","averagetemperature":25}]}
Thanks
'self.fillDefaultColors = @ {date:tempColor};'你每次都覆蓋'self.fillDefaultColors'。 '[self.fillDefaultColors setObject:tempColor forKey:date];',並且您需要在某處執行'self.fillDefaultColors = [[NSMutableDictionary alloc] init];'請注意,如果您有一些等於'date'的值,由於鍵是唯一的,因此'object'(value)將被替換。 – Larme
除了問題**永遠不會**使用像dataWithContentsOfURL這樣的同步方法從遠程URL加載數據。它會阻止當前線程。爲什麼你傳遞選項'NSJSONReadingMutableContainers'但將結果賦給一個不可變的對象? – vadian
@vadian我是新來的目標C,我發現這個代碼在互聯網教程... – MKovac