2010-04-20 57 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,您將得到正確的答案。