我创建了一个基于NSManagedObject的Users类,其中包含以下属性(id,name,age等)。
我正在使用核心数据模型,但我不确定如何进行以下操作......
现在我想知道如何根据用户ID获取用户详细信息。
示例:select * from users where id = 1
请帮帮我。
答案 0 :(得分:1)
您应该使用 NSPredicate
类来执行SQL命令。代码:
NSManagedObjectContext *context = self.managedObjectContext; // specify your MOC object
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"users" inManagedObjectContext:context]; // specify your entity (table)
NSPredicate *predicate = [NSPredicate predicatewithFormat:@"id == %d",yourID]; // specify your condition (predicate)
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *array = [context executeFetchRequest:fetchRequest error:&error]; // execute
[entity release];
[predicate release];
[fetchRequest release];
if (array == nil) {
// Error: no objects returned
} else {
// Success: do whatever you want
}
如果要执行查询,则需要分配/初始化NSFetchRequest对象。
如果您想指定select * from users ...
,则应使用NSEntityDescription
:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"users" inManagedObjectContext:context];
最后,您需要通过以下方式将实体描述“附加”到NSFetchRequest对象:
[fetchRequest setEntity:entity];
如果您想要条件(例如... where id = 1
),则必须实施NSPredicate
。
NSPredicate *predicate = [NSPredicate predicatewithFormat:@"id == %d",yourID];
yourID
必须是一个数字(例如1
,2
,7
或46
)。
而且,再次:
[fetchRequest setPredicate:predicate];
NSArray *array = [context executeFetchRequest:fetchRequest error:&error];
满足条件的所有记录将作为NSManagedObjects数组返回。
[entity release];
[predicate release];
[fetchRequest release];
如果没有符合条件的对象,array
对象将为nil
。您可以通过以下方式检查并处理错误:
if (array == nil)
查看Core Data Programming Guide了解详情。 :)