1

基本上我正在开发一个允许用户跟踪他们的电视节目的应用程序。用户可以单击他们的电视节目以获取季节和剧集细分。

为了实现这一点,我试图从这个 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 存储电视季节和剧集的正确方法,这样我就可以在我的应用程序中使用这些数据!

4

1 回答 1

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];
于 2013-10-16T17:14:01.143 回答