2010-04-20 58 views
0

我有一个与其他实体有关系的实体。假设我们有:用户 - >菜单 - >膳食iPhone核心数据 - 实体之间不是固定路径

我的问题是,有些用户没有菜单。所以,当我尝试检查:user.menu.meal ==米,我得到一个错误(找不到路径...)!

谢谢你的帮助!

回答

0

添加零支票那么关系...

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

甚至更​​好,定义一个辅助方法,将返回了一顿,如果它是目前...

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

问题是,我有一对多的关系,不能检查每个菜单和用餐......你有没有更好的解决方案来实现NSPredicate? – ncohen 2010-04-20 11:51:24

+0

您可以在NSPredicate中执行类似的检查。如果您有实体用户的FetchRequest,那么您可以指定一个NSPredicate,如下所示: predicate = [NSPredicate predicateWithFormat:@“(menu!= nil)AND(menu.meal!= nil)”]; – mmccomb 2010-04-20 12:44:28

+0

好吧,但让我说我的一些用户有菜单,其中一些菜单有饭菜。你如何处理这些“一对多”的关系? – ncohen 2010-04-20 12:58:35

0

首先,你可以在代码中选中此项,因为:

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

内,您的谓词的它看起来是相同的:

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

在任何一种情况下,因为在Objective-C中优雅地处理nil,您将得到正确的答案。