如何使用Objective C从iOS中的Core Data过滤数据

时间:2015-10-03 13:35:20

标签: ios objective-c core-data nspredicate

我有一个名为学生的实体,它具有以下结构:

enter image description here

我从CoreData获取数据:

 NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Student"];
 self.arrStudents = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

现在我只想要那些有rollNum = 1001的学生。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

Try this

**Objective C**

NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Student"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"rollNum = %@", @"1001"];
[fetchRequest setPredicate:predicate];
self.arrStudents = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

**Swift** 
var managedObjectContext: NSManagedObjectContext? = managedObjectContext
var fetchRequest = NSFetchRequest(entityName: "Student")
var predicate = NSPredicate(format: "rollNum = %@", "1001")
fetchRequest.predicate = predicate
arrStudents = try? managedObjectContext?.fetch(fetchRequest)

答案 1 :(得分:1)

您应该使用NSPredicate来过滤结果:

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"rollNum == %d", 1001];