Je suis nouveau aux données de base et essaye d'obtenir tous les objets enfants de différents types avec une requête. Dites qu'il y a un type "animal" comme parent et "chat", "chien" et "oiseau" comme enfants. Je voudrais avoir les deux chats et chiens, mais pas Birds dans une seule requête retourné en tant qu'objets animaux. C'est possible?Comment utiliser NSPredicate pour capturer des objets enfants?
Répondre
Managed objects have an entity
property, donc vous devriez être en mesure de combiner Kevin Sylvestre's solution avec a predicate de entity.name != "Bird"
.
Oui, il est possible:
// Load delegate from application and context from delegate.
SampleAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = delegate.managedObjectContext;
// Create new request.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
// Create entity description using delegate object context.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Animal" inManagedObjectContext:context];
// Set entity for request.
[request setEntity:entity];
[request setIncludesSubentities:YES];
// Load array of documents.
NSError *error;
NSArray *animals = [context executeFetchRequest:request error:&error];
// Release request.
[request release];
// Access array.
for (id animal in animals) { }
Merci pour la réponse rapide. Je suis désolé, j'ai oublié de mentionner la chose la plus importante: il y a un autre enfant (disons "Bird"). Ce dont j'ai besoin, c'est d'avoir à la fois des chats et des chiens, mais pas des oiseaux. J'ai édité la question principale – cocoapriest
Bien que ce (entity.name != "Bird"
) puisse fonctionner si vous avez seulement "Chat", "Chien" et "Oiseau", cela ne fonctionne pas si vous ajoutez plus tard "Animaux". Vous pouvez également utiliser entity.name == "Dog" && entity.name == "Cat"
C'est un cas de "... auras-tu jamais d'autres animaux, dans ton cas, des animaux?" Amusez-vous =)
- 1. Comment retourner des objets enfants?
- 2. Comment utiliser NSPredicate pour les valeurs de chemin de clé
- 3. Utiliser grep pour capturer des liens javascript
- 4. Utiliser Hpricot pour obtenir des éléments enfants
- 5. NSPredicate: filtrage des objets par jour de la propriété NSDate
- 6. NSPredicate pour aider à compter les objets dans le tableau
- 7. Objets enfants dans MongoDB
- 8. objets enfants dans linq
- 9. Décrire des objets enfants avec Concombre/MongoDB
- 10. XmlSerialization personnalisé pour les objets imbriqués/enfants
- 11. Mappeur de données pour objets enfants
- 12. Comment filtrer correctement les objets enfants?
- 13. Utiliser l'usine pour obtenir des objets Injecté
- 14. Comment identifier et récupérer des objets enfants dans JDO
- 15. JavaScript pour tester un objet et des objets enfants et petits-enfants (par exemple: images HTML)
- 16. Comment décomposer NSPredicate en composants?
- 17. Comment utiliser LINQ-to-Entity pour interroger des objets contenus
- 18. Comment utiliser REF pour référencer des objets de ligne?
- 19. utilisation NSPredicate
- 20. Syntaxe NSPredicate pour DATEADD?
- 21. Comment créer le bon NSPredicate pour ce genre de requête?
- 22. Rails de tri des objets enfants et l'affichage
- 23. NSPredicate des caractères spéciaux - iPhone
- 24. Regex pour capturer des groupes
- 25. Choix de syntaxe pour accéder aux objets enfants
- 26. Données de base, tri des objets enfants un-à-plusieurs
- 27. Traverser plusieurs objets Core Data à l'aide de NSPredicate
- 28. Comment utiliser nth-child avec seulement des enfants directs?
- 29. objets enfants dans rdlc (Studio 2010RC)
- 30. Comment utiliser des objets avec des types xsi: dans Savon
entité est une méthode, pas une propriété .. – cocoapriest
C'est une propriété informelle, dans la mesure où vous pouvez utiliser KVC pour y accéder (puisqu'il y a une méthode là), par opposition à un formel ('@ property') propriété. –
Vous ne pouvez pas utiliser cette méthode avec un magasin SQLite car la propriété 'entity' n'est pas disponible lorsque les objets sont en défaut. Vous n'avez pas vraiment le choix de faire une étape de filtrage post-récupération. –