0

J'ai une entité qui a des relations avec d'autres entités. Disons que nous avons: utilisateur-> menu-> repasiPhone Données de base - Chemin non constant entre entités

Mon problème est que certains des utilisateurs n'ont pas de menu. Donc quand j'essaye de vérifier: user.menu.meal == rice je reçois une erreur (chemin non trouvé ...)!

Nous vous remercions de votre aide!

Répondre

0

Ajouter un chèque nul sur la relation puis ...

if (user.menu != nil && user.menu.meal != nil) 

Ou mieux encore, définir une méthode d'assistance qui renverra le repas si elle est présente ...

mealForUser:(User*)someUser { 
    if (user.menu != nil && user.menu.meal != nil) 
    return user.menu.meal; 
} 
+0

Le problème est que j'ai de nombreuses relations et que je ne peux pas vérifier chacun des menus et des repas ... n'avez-vous pas une meilleure solution à implémenter dans NSPredicate? – ncohen

+0

Vous pouvez effectuer des vérifications similaires dans votre NSPredicate. Si vous avez un FetchRequest pour l'utilisateur de l'entité, vous pouvez spécifier un NSPredicate comme suit ... predicate = [NSPredicate predicateWithFormat: @ "(menu! = Nil) ET (menu.meal! = Nil)"]; – mmccomb

+0

Ok mais disons que certains de mes utilisateurs ont des menus et certains de ces menus ont des repas. Comment feriez-vous avec ces relations «un à plusieurs»? – ncohen

0

D'abord, vous pouvez le vérifier dans le code comme:

if (![user valueForKeyPath:@"menu.meal"]) { 
//User does not have a menu or a meal 
} 

A l'intérieur de votre prédicats il aurait la même apparence:

[NSPredicate predicateWithFormat:@"user.menu.meal == nil"] 

Dans les deux cas, parce que nil est géré avec élégance dans Objective-C, vous obtiendrez la bonne réponse.

Questions connexes