2013-10-16 210 views
1

基本上我正在開發一個應用程序以允許用戶跟蹤他們的電視節目。用戶可以點擊他們的電視節目來獲得季節和情節分解。將JSON數據轉換並存儲到iOS核心數據中

爲了實現這一點,我試圖從這個API中收集JSON數據,然後將數據存儲到核心數據中。 API調用是這樣的: http://api.trakt.tv/show/summary.json/36590b30dc7d0db9ebd3153b1a989e5d/arrow/1

我可以成功地存儲的值:標題,年份,URL,first_aired等,但我不能工作,如何季節和情節信息存儲到我的核心數據(位於JSON API調用的大約一半處)

我已經包含指向我如何設置核心數據模型截圖的鏈接: ! http://i546.photobucket.com/albums/hh427/camcham/ScreenShot2013-10-17at34449AM.png

下面的代碼是如何我目前正在嘗試存儲JSON數據到我的核心數據(使用MagicalRecords

NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread]; 


     Show *showp = [Show MR_findFirstByAttribute:@"sID" withValue:showID inContext:localContext]; 
     if (![showp.sID isEqualToString:showID]) 
     { 
      //Create New Show in current thread 
      Show *showContext = [Show MR_createInContext:localContext]; 
      showContext.title = showTitle; 
      showContext.poster = showPoster; 
      showContext.year = showYear; 
      showContext.sID = showID; 
      //code above this comment correctly adds right JSON info to core data and i can access and display it properly 

我的代碼的下一個部分,我試圖轉換一個NSArray到NSSet,因爲我的'季節'關係是NSSet類型,但是我相信JSON數據是NSArray。我收到以下錯誤:*終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因是:「 - [__ NSCFNumber managedObjectContext]:無法識別的選擇發送到實例0xa22a680」

   NSArray *show = [(NSSet *)[JSONEvents objectForKey:@"seasons"] valueForKey:@"season"]; 
      showContext.seasons = [NSSet setWithArray:show]; 

下面的代碼就無法正常工作意。例如,episode.title存儲每一集的標題,而不僅僅是特定情節的單個標題。

  Season *season = [Season MR_createInContext:localContext]; 
      season.seasonNumber = [(NSDictionary *)[JSONEvents objectForKey:@"seasons"] valueForKey:@"season"]; 
      season.episodes = [(NSDictionary *)[JSONEvents objectForKey:@"seasons"] valueForKey:@"episodes"]; 


      Episode *episode = [Episode MR_createInContext:localContext]; 
      episode.title = [[(NSDictionary *)[season.episodes objectForKey:@"seasons"] valueForKey:@"episodes"] valueForKey:@"title"]; 
      episode.overview = [[(NSDictionary *)[JSONEvents objectForKey:@"seasons"] valueForKey:@"episodes"] valueForKey:@"overview"]; 

所以總結這一切,我會有人來演示存儲從我的JSON API的電視季節和情節正確的方式愛,這樣的話,我可以在我的應用程序利用這些數據!

+0

你收到多個節目和多發季節,因爲它看起來像你只創建1個賽季1個插曲。 – Kevin

+0

我試圖存儲多個季節和劇集,但上面的代碼將所有劇集存儲在一起,而不是單獨的新劇集。如何更改我的代碼以正確存儲季節和情節數據? – user2390918

回答

1

刪除轉換爲(NSSet *)應該修復錯誤。

NSArray *show = [[JSONEvents objectForKey:@"seasons"] valueForKey:@"season"]; 
showContext.seasons = [NSSet setWithArray:show]; 

,而不是

NSArray *show = [(NSSet *)[JSONEvents objectForKey:@"seasons"] valueForKey:@"season"]; 
showContext.seasons = [NSSet setWithArray:show]; 
+0

這確實修復了錯誤,謝謝! – user2390918