【发布时间】:2011-06-24 12:31:43
【问题描述】:
在CoreData中,当你想查询一个对象时,你必须指定实体的名称和字符串中的属性名称,如下所示:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:context];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"Name=%@ AND Forename=%@", name, vorname];
我不太喜欢这种方法,因为这样做,IDE 在重命名某个属性或重命名类名等场景中无法帮助我。
使用这个代码块,我通过自省获取类名,使我的调用更加动态:
NSString *classname = [[Person class] description];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.entity = [NSEntityDescription entityForName:classname inManagedObjectContext:context];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"Name=%@ AND Forename=%@", name, vorname];
有没有办法以相同的方式获取属性的名称(名称和名字)? 我不知道如何动态处理属性。
你明白我的意思吗?如果有人能指出我正确的方向,我会很高兴。
【问题讨论】:
标签: objective-c ios core-data introspection