2014-07-09 100 views
4

我是iOS開發中的新出價。我正在使用核心數據NSManagedObject來執行插入和提取操作。它工作得很好。但問題是,我想從表中只提取一些選定的記錄(MySQL中的條件)。 例如「從城市='浦那'的用戶中選擇姓名」; 我發現NSPredicate獲取過濾的數據。但它提供了數組中的所有數據,而不僅僅是所選數據。對於例如如果結果爲上面的查詢是:如何獲取核心數據中的特定記錄

然後NSPredicate結果會給:

fname = Anu 
lname = Padhye 
city = Pune 
id = 3 

有沒有辦法只能在iOS的Objective-C的取選定的記錄/秒?以下是我使用NSManagedObject代碼片段:

NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"User"]; 
    valueData = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy]; 


NSEntityDescription *productEntity=[NSEntityDescription entityForName:@"User" inManagedObjectContext:managedObjectContext]; 
NSFetchRequest *fetch=[[NSFetchRequest alloc] init]; 
[fetch setEntity:productEntity]; 
NSPredicate *p=[NSPredicate predicateWithFormat:@"id == %d", 3]; 
[fetch setPredicate:p]; 
    //... add sorts if you want them 
NSError *fetchError; 
NSArray *fetchedProducts=[valueData filteredArrayUsingPredicate:p]; 

回答

13

試試這個:

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"User"]; 
request.predicate = [NSPredicate predicateWithFormat:@"city == %@ && id == %d", @"Pune", 3]; 
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"id" ascending:YES]]; 

NSArray *results = [managedObjectContext executeFetchRequest:request error:nil]; 

結果陣列現在應該包含誰擁有浦那作爲他們與3

+0

的ID城市的所有記錄非常感謝。這工作得很好:) –

+0

如何在Core Data中添加「group by」邏輯以避免數據重複。 – Developer