2009-07-25 6 views
0

J'ai un modèle d'objet géré A et B avec une relation un-à-plusieurs.Le format NSPredicate correct pour une relation un-à-plusieurs dans les données de base

Pour cette tâche particulière, je souhaite récupérer tous les objets A qui ont une relation avec B avec une propriété correspondant à "chaîne".

J'avais essayé @"ALL bObjects.bProperty MATCHES 'string'", et il a provoqué une objc_exception_throw dans:

[NSSQLGenerator generateSQLStatementForFetchRequest:ignoreInheritance:countOnly:] 

Ce qui semble être le problème?

Quelqu'un peut me conseiller sur le bon format de prédicat?

Répondre

0

Selon le Predicate Programming Guide, vous ne pouvez pas utiliser l'opérateur MATCHES lors de l'extraction à partir de magasins SQL Core Data.

L'opérateur matches utilise regex, donc ne sont pas pris en charge par le magasin- SQL de base de données bien qu'il fonctionne avec filtrage en mémoire.

En ce qui concerne les autres parties de votre prédicat, il serait actuellement seulement revenir A objets où l'ensemble complet de bObjects a une bProperty qui correspond à votre chaîne d'entrée. Si vous voulez renvoyer tous les objets A qui ont un objet dans l'ensemble bObjects correspondant, vous souhaitez utiliser le modificateur d'opérateur ANY.

ANY bObjects.bProperty LIKE[cd] 'string' 
0

Merci de remarquer que les limites imposées, oui autant que je veux croire la documentation, j'ai essayé pour SQLite chercher MATCHS demande, et il fonctionne, mais pour la sécurité je l'ai changé en SIMILAIRES. La seule chose qui ne fonctionne pas, c'est si j'utilise ce prédicat sur les données de base en utilisant le stockage SQLite avec une requête de recherche sur un objet connexe (dans ce cas-là), sans utiliser de correspondance.

À l'heure actuelle, je n'utilise pas la fonction de recherche basée sur la relation, c'est trop risqué, et je ne sais toujours pas quelle erreur, je l'ai posté sur devforums.apple.com, personne ne répond toujours.

Questions connexes