2010-02-12 3 views
1

Exemple: J'ai lu des données d'un fichier XML. Ces données ont des éléments d'identification uniques. Je veux stocker ces objets avec leur identifiant unique original. Comment ferais-je cela?Puis-je demander à Core Data d'utiliser un identifiant unique spécifique pour un objet y lors de son enregistrement?

Je compris que je pouvais demander à l'objet géré pour son ID, comme ceci:

NSManagedObjectID *moID = [managedObject objectID]; 

mais ici le problème est: Le XML me dit avec l'élément id qui objet c'est, et je besoin de chercher dans la base de données de base si cet objet existe déjà là, ou non. Donc est-ce la seule option pour créer un attribut id dans mon modèle d'objet géré pour cette entité, puis demander pour cela? Ensuite, je vais avoir deux systèmes d'identification droite?

Répondre

6

Ne vous inquiétez pas du ObjectID des données de base. Il s'agit d'un ID unique interne qui n'est pas garanti pour être constant pendant le cycle de vie de l'objet (par exemple, il changera lorsque vous sauvegarderez l'objet dans le magasin sql). Créez simplement un nouvel attribut obligatoire dans votre modèle et marquez-le comme indexé afin que la récupération soit rapide.

1

Dans l'entité associée à ce type d'objets, ajoutez simplement un autre attribut de type string, appelez-le objectID ou similaire et déclarez-le obligatoire.

+0

Je ne comprends pas. Pouvez-vous donner un exemple? – dontWatchMyProfile

+0

Ouvrez votre modèle de base de données, sélectionnez votre entité et ajoutez un nouvel attribut comme je vous l'ai dit. Notez que l'ObjectID tel qu'expliqué par Diederick n'a rien à voir avec ce que vous voulez réaliser: assigner votre propre ID personnel à vos objets. Lorsque vous insérez un nouvel objet, vous définissez l'attribut ID à l'aide de votre propre chaîne qui identifie l'objet de manière unique à vos fins. –

+0

Merci. Juste pour bien le faire: je créerais simplement un attribut de type string (comme pour le firstName, par exemple) et le marquerais comme "indexé" afin qu'il puisse être recherché rapidement. Et je ne m'intéresserai pas à cet identifiant "aléatoire" que les données de base génèrent. Droite? – dontWatchMyProfile

Questions connexes