我有一個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