Bonjour, je travaille sur les données de base avec 3 entités (classe, étudiants, examens) et leur zone de relations comme: J'ai créé un prédicat pour la recherche de la liste des étudiants pour la classe 5ème . P> NSString * fmt2 = @"studentsToClass.className=%@";
NSPredicate * p2 = [NSPredicate predicateWithFormat:fmt2,@"5th",nil];
4 Réponses :
Vous pouvez utiliser un prédicat composé: ou vous combinez simplement les tests avec "et": p> Notez que le Liste des arguments de prédicatwithformat code> n'est pas
nil code>-attéminisé.
Le nombre d'arguments est déterminé par le nombre de spécificateurs de format dans le format
chaîne. p> p>
@FogMeister: J'aimerais savoir.
@Martinr merci pour votre aide mais je ne suis toujours pas capable d'aller chercher le résultat de l'étudiant.My Predicate devient: StudentStoclass.classname == "5ème" et StudentStoexamrecord.result == "Pass" S'il vous plaît aider et corrigez-moi où je me trompe
@sagar: obtenez-vous une erreur ou aucun résultat? Montrez peut-être comment les entités sont définies et comment vous créez les objets. Obtenez-vous tous les objets si vous omettez le prédicat?
Si j'applique StudentsStoclass.classname == "5ème, je reçois tous les élèves d'autres enregistrements
@sagar: Mais le prédicat semble ok. Êtes-vous sûr que la relation des étudiants à examiner est définie? La valeur de l'attribut "résultat" est-elle vraiment "PASS" ou pourrait-elle être minuscule?
Premièrement, votre prédicat indiqué est vraiment déjà faux. Vous devez référencer l'objet géré, pas sa propriété (c'est-à-dire pas le nom En outre, vous devez vraiment choisir des noms plus lisibles pour vos variables et vos propriétés. Donc, pas Donc, votre prédicat composé souhaité est fait comme ceci (version courte): p> la version compliquée, si vous vraiment besoin em > Un niveau d'abstraction plus élevé (que je doute): p> code> de la classe
code>). Il devrait être:
fmt2 code> mais
formatatingstring code>. Pas
StudentStoclass code> mais
formulaire code> ("Classe" est un mot spécial dans l'objectif-c). Vous avez eu l'idée. p>
Comment rejoindre deux sous-émissaires en une seule si elles sont à la fois facultatif, c'est-à-dire A ou B et non A et B.
Ce serait une question distincte du SOF ;-).
Oui, j'ai trouvé que :) Cela se fait en utilisant OrpredicatewithSubpredcasculates:
Tout d'abord, vous ne devriez pas vraiment appeler le par exemple p> Dans ce cas, l'étudiant code> relation code> sur edit forte> p> juste pour ajouter à cela. Le nom de la relation devrait expliquer pourquoi il est là. Nous pouvons voir que la relation est de la classe à l'étudiant, mais si vous l'appelez "Classostudent", cela n'explique rien. En outre, et si vous avez une deuxième relation de la classe à l'étudiant? Comment tu appelles cela. Si vous appelez cela Solution strong> p> Dans cet exemple, je vais les appeler comment je les appellerais et que vous verrez cela le rend un peu plus facile à comprendre ... P> Quoi qu'il en soit. .. p> Classe d'étudiant - Classe Code> Relation
StudentSoclass code>. Le nom de la relation devrait refléter quel type d'objet est à l'autre extrémité.
classe code> devrait être appelé
class code> car l'objet Il existe une seule classe
une entité code>.
La relation inverse ne doit pas être appelée
classostudent code> il devrait être appelé
étudiants code> car l'objet il y a un
nsset code> de plusieurs
étudiants code >. P>
participants code> ou
élèves code> ou
assisterstuts code> etc .. Il donne la signification de la relation. P>
Merci pour votre aide mais je ne peux toujours pas chercher l'étudiant.My prédicat devient: étudiantstoclass.classname == "5ème" et étudianttoexamrecord.result == "Pass" S'il vous plaît aider et corrigez-moi où je me trompe
Les prédicats peuvent également être imbriqués à l'aide de prédicats composés (pour let orPredicate = NSCompoundPredicate(type: .or, subpredicates: [date_1KeyPredicate, date_2KeyPredicate])
let functionKeyPredicate = NSPredicate(format: "function_name = %@", self.title!)
let andPredicate = NSCompoundPredicate(type: .and, subpredicates: [orPredicate, functionKeyPredicate])