我有一個與其他實體有關係的實體。假設我們有:用戶 - >菜單 - >膳食iPhone核心數據 - 實體之間不是固定路徑
我的問題是,有些用戶沒有菜單。所以,當我嘗試檢查:user.menu.meal ==米,我得到一個錯誤(找不到路徑...)!
謝謝你的幫助!
我有一個與其他實體有關係的實體。假設我們有:用戶 - >菜單 - >膳食iPhone核心數據 - 實體之間不是固定路徑
我的問題是,有些用戶沒有菜單。所以,當我嘗試檢查:user.menu.meal ==米,我得到一個錯誤(找不到路徑...)!
謝謝你的幫助!
添加零支票那麼關係...
if (user.menu != nil && user.menu.meal != nil)
甚至更好,定義一個輔助方法,將返回了一頓,如果它是目前...
mealForUser:(User*)someUser {
if (user.menu != nil && user.menu.meal != nil)
return user.menu.meal;
}
首先,你可以在代碼中選中此項,因爲:
if (![user valueForKeyPath:@"menu.meal"]) {
//User does not have a menu or a meal
}
內,您的謂詞的它看起來是相同的:
[NSPredicate predicateWithFormat:@"user.menu.meal == nil"]
在任何一種情況下,因爲在Objective-C中優雅地處理nil,您將得到正確的答案。
問題是,我有一對多的關係,不能檢查每個菜單和用餐......你有沒有更好的解決方案來實現NSPredicate? – ncohen 2010-04-20 11:51:24
您可以在NSPredicate中執行類似的檢查。如果您有實體用戶的FetchRequest,那麼您可以指定一個NSPredicate,如下所示: predicate = [NSPredicate predicateWithFormat:@「(menu!= nil)AND(menu.meal!= nil)」]; – mmccomb 2010-04-20 12:44:28
好吧,但讓我說我的一些用戶有菜單,其中一些菜單有飯菜。你如何處理這些「一對多」的關係? – ncohen 2010-04-20 12:58:35