基本上我正在开发一个允许用户跟踪他们的电视节目的应用程序。用户可以单击他们的电视节目以获取季节和剧集细分。
为了实现这一点,我试图从这个 API 收集 JSON 数据,然后将数据存储到核心数据中。API调用是这样的: http: //api.trakt.tv/show/summary.json/36590b30dc7d0db9ebd3153b1a989e5d/arrow/1
我可以成功存储以下值:title、year、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]: unrecognized selector sent to instance 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 存储电视季节和剧集的正确方法,这样我就可以在我的应用程序中使用这些数据!