可变数组仅包含相同的项

时间:2015-05-29 14:20:37

标签: ios objective-c json

我正在尝试将Json数据存储到可变数组中。 JSON数据有" city"和循环内的主字典分支,其中主分支包含温度。当我在主体中循环时,所有先前的温度都被后者取代。 这是示例代码:

object = [[NSMutableArray alloc]init];
NSURL *url = [NSURL URLWithString:@"http://api.openweathermap.org/data/2.5/forecast/city?q=london,uk&APPID="];
//8a7bc4e5d8246122294adb174b708711
NSData *data = [NSData dataWithContentsOfURL:url];
Model *mod = [[Model alloc]init];
NSError *error;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSDictionary *cityDict = [jsonDict objectForKey:@"city"];
NSString *cityName = [cityDict objectForKey:@"name"];


 // NSLog(@"%@",cityName);
   NSLog(@"%@",mod.city);
NSMutableArray *arrayOfTemperature = [jsonDict objectForKey:@"list"];
for (NSDictionary *obj in arrayOfTemperature) {
    NSDictionary *main = [obj objectForKey:@"main"];
    NSString *temp = [main objectForKey:@"temp"];
    //NSLog(@"%@",temp);
    mod.temp = temp;
    [object addObject:mod];

}

1 个答案:

答案 0 :(得分:1)

您反复使用相同的mod实例。您需要在每次迭代时创建一个新的。

移动线:

Model *mod = [[Model alloc]init];

for循环内部:

NSMutableArray *arrayOfTemperature = [jsonDict objectForKey:@"list"];
for (NSDictionary *obj in arrayOfTemperature) {
    Model *mod = [[Model alloc]init];
    NSDictionary *main = [obj objectForKey:@"main"];
    NSString *temp = [main objectForKey:@"temp"];
    //NSLog(@"%@",temp);
    mod.temp = temp;
    [object addObject:mod];
}