2011-11-12 2 views
1

Je reçois des données d'Internet et je souhaite stocker ces données dans un objet, par exemple "InternetData". Cette classe contient des propriétés et cette classe est liée à un magasin de persistance de données de base.ios: Création d'un objet CoreData sans le conserver immédiatement

J'ai déjà téléchargé InternetData de la session précédente de mon application et ils sont déjà stockés dans la base de données à laquelle les données de base mappent les objets. Le problème: Si je veux télécharger de nouvelles données Internet maintenant, je téléchargerai au moins partiellement la même chose seulement une fraction des nouvelles données Internet qui arrivent est vraiment nouvelle, le reste est déjà stocké dans ma base de données. Et je veux éviter que je stocke les mêmes données deux fois ou plus souvent. Par conséquent, je veux créer une instance vide d'InternetData avec [[InternetData alloc] init] écrire les choses que j'ai téléchargées dans cet objet et après je veux utiliser une méthode de comparaison qui compare le nouvel objet InternetData non lié avec l'ancien de la base de données. Seul le nouvel objet ne se trouve pas dans les anciennes données. Je souhaite ajouter le nouvel objet au magasin de persistance et éventuellement le stocker dans la base de données. Le problème que j'ai actuellement est que mon programme se bloque lorsque je tente de créer un nouvel objet InternetData qui est indépendant du sotre de persitence, je veux dire quand faire [[InternetData alloc] init] Je reçois le message d'erreur

CoreData: error: Failed to call designated initializer on NSManagedObject class 'InternetData'
[InternetData setDate:]: unrecognized selector sent to instance 0xd26f4f0

Donc, ma question: est ce que je veux fondamentalement possible de créer un objet InternetData qui n'est d'abord pas lié au magasin de persistance des données de base et après une courte période je copierais les données nouvellement créées dans un second objet InternetData borné (que je créé d'une manière bornée), puis le stocker dans le magasin de persistance?

Répondre

0

Il existe plusieurs méthodes pour résoudre votre problème. Tout d'abord, vous ne pouviez pas allouer l'instance + init de NSManagedObjectModel. Ainsi, vous pouvez faire des opérations suivantes pour stocker les données temporaires:

  1. magasin dans NSDictionary
  2. magasin dans un autre NSManagedObjectContext
+0

Merci pour votre réponse. Utiliser un autre NSManagedObjectContext semble un peu exagéré dans mon cas et par conséquent je ne voudrais pas utiliser cette approche. Mais actuellement, je ne vois pas comment un NSDictionary pourrait aider dans mon cas parce que, comme je le vois, je devrais créer une instance vide d'InternetData de toute façon qui conduirait encore à la même erreur. – toom

+0

Vous pouvez enregistrer toutes les clés et valeurs dans le dictionnaire. Par exemple, l'objet 'InternetData' a la propriété' data'. Le vous pouvez stocker dans le dictionnaire: key == 'data' et la valeur de cette clé va stocker ces données. – Nekto

+0

Ouais, ce serait possible mais seulement d'une manière agréable si je n'avais qu'un seul paquet de données InternetData à chaque fois. En fait j'ai normalement 2 maybee ou même 20 nouveaux paquets qui finiraient par faire quelque chose comme date_key1 == date1, text_key1 == texte1, date_key2 == date2, text_key2 == text2 et ainsi de suite. Dans ce cas, une autre maybee dans un magasin de données basé sur la mémoire serait plus appropriée, ou je créerais une nouvelle classe d'assistance qui serait la même que la classe originale mais pas liée à un magasin de données et serait une solution tout aussi moche. Mais de toute façon, merci pour votre aide. – toom

Questions connexes