2010-02-06 68 views
1

我是一個CoreData noob,但我慢慢地把我的頭圍繞它。我無法用下面的代碼:NSPredicate聚合IN語句不工作

NSArray * artisteIds = [@"1,2,3,4" componentsSeparatedByString:@","]; 
predicate = [NSPredicate predicateWithFormat:@"(artisteId IN %@)", artisteIds]; 

我的藝人管理對象有artisteId的NSNumber的領域,我已經通過我的對象範圍內的所有藝人循環並有肯定與ID的1-420對象。

但我的助手方法總是返回一個空的結果與查詢

NSMutableArray* mutableFetchArtistes = [CoreDataHelper searchObjectsInContext:@"Artiste" :predicate :@"title" :YES :managedObjectContext];  

任何建議設置?

爲了測試它的作品我用下面的並得到3個結果

predicate = [NSPredicate predicateWithFormat:@"(artisteId = 1) or (artisteId = 2) or (artisteId = 3)", artisteIds]; 

回答

1

計數我認爲陣列artisteIds應包含NSNumber對象,例如

NSArray *artisteIds = [NSArray arrayWithObjects: 
    [NSNumber numberWithInteger:1], 
    [NSNumber numberWithInteger:2], 
    [NSNumber numberWithInteger:3], 
    [NSNumber numberWithInteger:4], 
    nil]; 

你也可以使用NSSet而非NSArray,但我不知道這是否有差別。

+0

好吧我明白你在說什麼,但硬指標1,2,3,4只是爲了例子,值是由我的數據對象定義,因此每次都有所不同,有沒有辦法強制它投射到NSNumber實體? – 2010-02-06 20:47:42

+0

沒有我所知道的。但是您可以遍歷數組並將每個元素轉換爲NSNumber的一個實例。或者使用''(artisteId in {1,2,3,4})「這樣的謂詞。 – MrMage 2010-02-06 21:53:46