2015-02-10 79 views
0

我有一個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控制器拉從核心數據和顯示數據表視圖

感謝您的任何意見建議創建方法。我已經搜索了很多很好的開始,完成這個任務的方式找不到一個好的教程或簡單的步驟採取的步驟。我發現的一切都非常簡單,或者對庫有很多依賴,因此非常複雜。

+0

'//保存核心數據中的對象'這是通過創建您的核心數據實體的實例,然後在您的託管對象上下文中調用保存操作來完成的。儘管如此,您可能需要小心重複記錄。我發現像Overcoat,Mantle這樣的庫有一個「唯一」的關鍵屬性,可以幫助庫知道哪個JSON屬性是唯一鍵(通常是實體ID)。 – Zhang 2015-02-10 09:31:32

回答

0

另一種巧妙的方法是在這篇文章中描述的事情:Pull Website Data Easily iOS

我不知道這是不是你在尋找什麼,但你可以在陣列後保存到核心數據,或只按原樣顯示。