IOS/Xcode:将Web服务馈送保存到核心数据中
问题描述:
我有一个Web应用程序,并希望将数据从Web服务下载到核心数据以显示在我的IOS应用程序中。最终目标是能够离线处理iOS应用程序,然后与网站(如Facebook)同步,但现在我只是试图将Web服务订阅源存储到核心数据和显示中。虽然我意识到有些图书馆可以提供帮助,但我希望在本地进行第一次迭代。我使用http://api.openweathermap.org/data/2.5/weather?q=London,uk作为json feed。IOS/Xcode:将Web服务馈送保存到核心数据中
以下是正确的路要走吗?
创建具有相同的属性名称作为JSON响应
在主视图控制器报头(vc.h)添加NSMutable Array属性保持为有线连接到故事板
JSON字段数据和出口属性的变量名在IOS数据模型@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”];
});
}
}
//保存在核心Data..I对象不知道如何做到这一点
//使用NSFetchedResults控制器拉从核心数据和显示数据表视图
感谢您的任何意见建议创建方法。我已经搜索了很多很好的开始,完成这个任务的方式找不到一个好的教程或简单的步骤采取的步骤。我发现的一切都非常简单,或者对库有很多依赖,因此非常复杂。
'//保存核心数据中的对象'这是通过创建您的核心数据实体的实例,然后在您的托管对象上下文中调用保存操作来完成的。尽管如此,您可能需要小心重复记录。我发现像Overcoat,Mantle这样的库有一个“唯一”的关键属性,可以帮助库知道哪个JSON属性是唯一键(通常是实体ID)。 – Zhang 2015-02-10 09:31:32