2011-09-27 103 views
0

我堅持了以下行,我不會對coredata多少知識,與nspredicate問題與操作

`NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(bookPath == %@) AND (accessed==%u)) AND (isCurrentSession==%u)", myString,[NSNumber numberWithBool:NO],[NSNumber numberWithBool:_accessed]];` 

高達現在我派了兩個值,我斷言,在上面謂語我正在使用三個值,

我的問題:我們可以在一個謂詞中應用兩個AND操作,任何人都可以提供一些有關this.This的概念。

+1

您正在使用'%u'替代('unsigned int'),但是替換爲'NSNumber *'。這會導致問題。對所有的替換使用'%@',或者不要在'NSNumbers'中將'BOOLs'包裝起來。 –

+0

感謝您的回覆,您的絕對正確我修改了錯誤。 – ajay

回答

0

是的,您應該能夠將謂詞與'AND'和'OR'組合成任意級別的複雜度。謂詞語法的正式語法分析器語法可以在here找到。

爲了獲得最佳性能,您應該對謂詞進行排序,以便在格式字符串中首先出現簡單的測試(例如數字比較),並且最後出現更復雜的測試(例如REGEX模式匹配)。

+0

順便說一句,你沒有在你的問題中實際上說過你是否嘗試過這種方法,並且遇到問題,或者你是否只想提前知道。 –

+0

感謝您的快速回放,您的鏈接非常棒。 – ajay