2013-08-01 55 views
0

我有coredata我的iPhone應用程序,但我在做什麼,從表中,這在我的情況是一個問題表,其中包含以下收集所有的值:CoreData和NSPredicate

@property (nonatomic, retain) NSString * answerA; 
@property (nonatomic, retain) NSString * answerB; 
@property (nonatomic, retain) NSString * answerC; 
@property (nonatomic, retain) NSString * answerD; 
@property (nonatomic, retain) NSString * correctAnswer; 
@property (nonatomic, retain) NSString * question; 
@property (nonatomic, retain) NSString * timeStampLastUsed; 
@property (nonatomic, retain) NSNumber * gameType; 
@property (nonatomic, retain) NSString * continent; 

我我得到所有的價值這種方式:

NSError *error; 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Questions" inManagedObjectContext:managedObjectContext]; 

    [fetchRequest setEntity:entity]; 

    NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

我想要的是在NSArray * fetchedObjects只有具有特定遊戲類型的問題。

我該如何做到這一點與NSPredicate?

感謝 問候

回答

1

如果你知道你要找的遊戲類型的值,你可以使用這樣的事情:

[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"gameType == %i", 0]]; 

通過設置你的讀取請求的謂語,它會過濾掉結果,並只返回你感興趣的項目。

+1

由於gameType是一個NSNumber對象,所以我會推薦'@「gameType.intValue ==%i」,0'。通常情況下,如果'intValue'被省略,它仍然有效,但它仍然是一種好的做法 – mrosales

+0

我現在試圖做一些更高級的事情,我想獲得歐洲大陸的所有遊戲類型:NSPredicate * predicate = [NSPredicate predicateWithFormat: (「gameType.intValue ==%i」)或(gameType.intValue ==%i)或(gameType.intValue ==%i))AND(continent.intValue ==%i)「,0,2,3 ,0];但是這並沒有使我期待的迴歸我。我想獲得來自歐洲大陸(0)的遊戲類型0,2和3。誰能幫我? – mmm

+0

根據您提供的參數,您的謂詞看起來是正確的。如果有的話,你會得到什麼結果?我發現創建一個'predicateWithBlock:'來測試你的過濾結果有時更容易,然後一旦你得到你需要的結果,就將它重構成'predicateWithFormat:'。 – CaptainRedmuff