本文共 3023 字,大约阅读时间需要 10 分钟。
作为留校的最后一个任务,天气预报与之前写的demo挺不一样的,对我来说还是挺有挑战性的,网络请求总是对不上,数组和字典看着看着就乱了,开始着手写的前一天半几乎没有进度,一点思路都没有,有一天下午改了一下午的error,一下午都不知道跑出来是什么样子,各种报错,慢慢才开始找到感觉走回正轨。
天气预报需要使用到传值及网络请求,可以参考和 github:这是我自己写的顺序,可能不太科学。。。
//在执行的代码前加入 if 限制条件,等需要的值加入完成后,再执行操作 if (_messageArray.count && _weekArray.count) { .......... }
- (void)confirm: (NSString *)name{ NSString *urlString = [NSString stringWithFormat:@"http://api.k780.com/?app=weather.realtime&weaid=%@&ag=today,futureDay,lifeIndex,futureHour&appkey=44524&sign=54dc62def4393a0d5cfe97a2a52646a6&format=json", name]; urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; NSURL *url = [NSURL URLWithString: urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; NSURLSession *sharedSession = [NSURLSession sharedSession]; NSURLSessionDataTask *dataTask = [sharedSession dataTaskWithRequest:request completionHandler:^(NSData *_Nullable data, NSURLResponse *_Nullable response, NSError *_Nullable error) { if (data) { NSMutableDictionary *secondDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; NSLog(@"success isEqualToString:1 = %i %@", [secondDictionary[@"success"] isEqualToString:@"1"], name); if ([secondDictionary[@"success"] isEqualToString:@"1"]) { self->a++; } else { [self->_cityArray removeObject:name]; self->d++; UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"该城市消息不完全,不予显示!" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *sure = [UIAlertAction actionWithTitle:@"sure" style:UIAlertActionStyleCancel handler:nil]; [alert addAction:sure]; [self presentViewController:alert animated:NO completion:nil]; } } NSLog(@"_cityArray.count = %lu", self->_cityArray.count); NSLog(@"_cityArray = %@", self->_cityArray); if ((self->a + self->d) == self->_cityArray.count) { [[NSOperationQueue mainQueue] addOperationWithBlock:^{ [self back]; [self change]; }]; } }]; [dataTask resume];}
效果图:
转载地址:http://nukti.baihongyu.com/