我有一个网络应用程序,想要从Web服务下载数据到核心数据,以便在我的IOS应用程序中显示。最终的目标是能够在离线的iOS应用程序上工作,然后与网站(如Facebook)同步,但现在我只是尝试将Web服务提要存储到核心数据和显示。虽然我意识到有一些库需要帮助,但我想在第一次迭代时本地完成它。我使用http://api.openweathermap.org/data/2.5/weather?q=London,uk作为json feed。
以下是正确的方法吗?
在IOS中创建具有与Json响应中的变量名称相同的属性名称的数据模型
在主视图控制器头文件(vc.h)中添加NSMutable Array属性以保存连接到storyboard的json字段的数据和出口属性
@property (nonatomic, strong) NSMutableArray *weatherData;
@property (weak, nonatomic) IBOutlet UILabel *temp;
@property (weak, nonatomic) IBOutlet UILabel *humidity;
在VC源代码中,合成属性并在viewDidLoad中使用NSSession下载数据
- (void)viewDidLoad {
[super viewDidLoad];
//1
NSString *dataUrl = [NSString stringWithFormat:@"http://api.openweathermap.org/data/2.5/weather?q=London,uk];
NSURL *url = [NSURL URLWithString:dataUrl];
// 2
NSURLSessionDataTask *downloadTask = [[NSURLSession sharedSession]
dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// could add error checking here.
// 3
[downloadTask setTaskDescription:@"weatherDownload"];
[downloadTask resume];
// 4: Handle response here
[self processResponseUsingData:data];
}];
}
#pragma mark - Private
// Helper method
- (void)processResponseUsingData:(NSData*)data {
NSError *parseJsonError = nil;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingAllowFragments error:&parseJsonError];
if (!parseJsonError) {
NSLog(@"json data = %@", jsonDict);
dispatch_async(dispatch_get_main_queue(), ^{
self.temp.text = jsonDict[@“temp”];
self.humidity.text = jsonDict[@“humidity”];
});
}
}
//在Core Data中保存对象..我不知道如何做到这一点
//使用NSFetchedResults控制器创建方法从核心数据中提取数据并在表格视图中显示
感谢您提出任何意见建议。我已经远远地搜索了一个良好的开端,完成这个方法无法找到一个好的教程或简单的步骤来采取。我发现的一切都非常简单,或者对库有很多依赖,因此非常复杂。
答案 0 :(得分:0)
另一种巧妙的方法是按照这篇文章中描述的那样做:Pull Website Data Easily iOS
我不知道这是否正是您正在寻找的,但您可以稍后将数组保存到核心数据中,或者只是按原样显示。