2013-10-16 4 views
1

Fondamentalement, je travaille sur une application pour permettre aux utilisateurs de suivre leurs émissions de télévision. Un utilisateur peut cliquer sur son émission de télévision pour obtenir une répartition par saison et épisode. Pour ce faire, j'essaie de recueillir des données JSON à partir de cette API, puis de stocker les données dans les données de base. L'appel API est la suivante: http://api.trakt.tv/show/summary.json/36590b30dc7d0db9ebd3153b1a989e5d/arrow/1Conversion et stockage de données JSON dans iOS Core Data

Je peux stocker avec succès les valeurs suivantes: titre, année, url, first_aired etc. Mais je ne peux pas trouver comment stocker la saison et les informations de l'épisode dans mes données de base (situé à environ la moitié de l'appel API JSON)

J'ai inclus un lien vers une capture d'écran de la façon dont j'ai défini mon modèle de données de base: ! http://i546.photobucket.com/albums/hh427/camcham/ScreenShot2013-10-17at34449AM.png

Le code ci-dessous comment je suis actuellement essayer de stocker les données JSON dans mes données de base (en utilisant 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 

La prochaine partie de mon code, j'ai essayé de convertir un NSArray à NSSet, comme ma relation 'saisons' est de type NSSet, cependant je crois que les données JSON sont NSArray. Je reçois l'erreur suivante: * Mettre fin application en raison d'une exception non interceptée 'NSInvalidArgumentException', raison: '- [__ NSCFNumber managedObjectContext]: sélecteur non reconnu envoyé à l'instance 0xa22a680'

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

Le code ne fonctionne pas ci-après prévu. episode.title, par exemple, stocke le titre de chaque épisode, au lieu du titre unique d'un épisode particulier.

  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"]; 

Donc, pour résumer, j'aimerais que quelqu'un de démontrer la bonne façon de stocker les saisons de télévision et des épisodes de mon API JSON, donc je peux ensuite utiliser ces données dans mon application!

+0

Est-ce que vous recevez plusieurs épisodes et plusieurs saisons, car il semble que vous ne créez 1 saison et 1 épisode. – Kevin

+0

J'essaie de stocker plusieurs saisons et épisodes, mais le code ci-dessus stocke tous les épisodes ensemble, au lieu d'objets séparés pour les nouveaux épisodes. Comment puis-je modifier mon code pour stocker correctement les données de saison et d'épisode? – user2390918

Répondre

1

La suppression de la distribution dans (NSSet *) doit corriger l'erreur.

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

au lieu de

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

Cela a corrigé l'erreur, merci! – user2390918