J'ai un modèle Coredata avec 4 entités. P>
Capture d'écran modèle -> http://img96.imageshack.us/img96/7857/ Screenshot20100209AT182.png P>
-statename p>
blockQuote>
Lieu: strong> p>
-LocessionName (attribut) p>
-LocalisationDescription p>
-LocalisationActivités (relatine) p>
-state (relation) p>
blockQuote>
EmplacementActivités: strong> p>
-Location (relation) p>
-Activity (relation) p>
blockQuote>
activités strong> p>
-ActivityName (attribut) p>
-LocationsActivités (relation) p>
blockQuote>
Comment puis-je écrire une requête qui sélectionne tous les emplacements ayant p>
(activité = 'golf' ou activité =
'Natation') et état = 'la' p>
blockQuote>
3 Réponses :
// With some NSManagedObjectContext *moc NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; [request setEntity:[NSEntityDescription entityForName:@"Location" inManagedObjectContext:moc]]; [request setPredicate:[NSPredicate predicateWithFormat: @"(locationActivities.activity.activityName == %@ OR locationActivities.activity.activityName == %@) AND state.stateName == %@", @"Golf", @"Swimming", @"LA"]]; NSError *error; NSArray *results = [moc executeFetchRequest:request error:&error];Basically, do a Core Data fetch as normal, then build the appropriate predicate to filter the results (as described in the Predicate Programming Guide).
Qu'en est-il de la table desactivités de liaison?
Correction, mais pourquoi cette entité est-elle dans la première place? Vous pouvez (je crois) simplement avoir une relation unique à une autre de l'emplacement à l'activité.
cela ne fonctionne pas. Je reçois l'erreur: "TO-nombreuses touches non autorisées ici". J'ai ajouté une autre entité comme suggérée par Stackoverflow.com/Questtions/1903177/...
Quel prédicat avez-vous utilisé cela vous a donné cette erreur? Avec une relation directe à de nombreuses relations de l'emplacement à l'activité (même si l'inverse est également à plusieurs), je pense que vous devriez être capable de faire "toutes les activités.ActivityName ==% @" dans le cadre de votre prédicat.
En terminer, vous devez arrêter de penser en termes de tables et de requêtes pour les données de base. Dans les données de base, ces spécificités du magasin persistant SQLLITE et vous ne les voyez jamais ou ne traitez pas avec eux. p>
Les entités ne sont pas des tables et des relations ne relient pas aux tables. Essayer de cramner le modèle d'objet dans une SQL dans votre tête vous mènera au chagrin car les données de base ne fonctionnent pas comme SQL. p>
Je viens de remarquer que dans votre écran de l'écran, votre entité code> Emplacement code> est en fait orthographié C'est suffisant pour détruire votre graphique. Tout prédicat qui recherche Les erreurs comme ceci font de moi la programmation de haine. Je semble passer plus de temps à suivre les fautes de frappe que je fixe des erreurs de conception. p> emplacement de localisation code> (notez le "C" manquant). p>
emplacementactivités code> échouera. p>