2013-05-03 68 views
1

有沒有一種方法可以構造NSPredicate,以便下面的數組可以通過大於5的平均分數進行過濾?帶有@avg集合運算符的NSPredicate的格式字符串

NSArray *objs = @[ 
@{@"scores":@[@3, @5, @2]}, 
@{@"scores":@[@5, @2, @8, @9]}, 
@{@"scores":@[@7, @1, @4]} 
]; 

我曾嘗試過各種組合,其中這一個似乎是最有希望的(考慮到@avg.self工作,以獲得數的平均值在通過正常KVC陣列的關鍵路徑):

NSPredicate *pred = [NSPredicate predicateWithFormat:@"[email protected] > 5"]; 
NSArray  *filterd = [objs filteredArrayUsingPredicate:pred]; 

運行時錯誤我得到的是以下幾點:

NSUnknownKeyException「原因:」 [< __NSArrayI 0x10011b7c0> valueForUndefinedKey:]:此類不是密鑰值編碼兼容的關鍵魅力。

此謂詞字符串的工作原理:[email protected] > 3,所以至少可以在謂詞中使用集合運算符。

回答