gpt4 book ai didi

core-data - 查询/过滤具有共同父级且不符合键值的核心数据实体

转载 作者:行者123 更新时间:2023-12-02 23:39:44 24 4
gpt4 key购买 nike

有没有办法创建谓词查询来过滤子实体?我希望能够返回一个对子项应用过滤的结果集。

例如我有形状。圆形和正方形是形状,我想这样做:

NSManagedObjectContext * context = [self managedObjectContext];

Circle * c = [NSEntityDescription insertNewObjectForEntityForName:@"Circle" inManagedObjectContext:context];
c.radius = @(10);

Square * s = [NSEntityDescription insertNewObjectForEntityForName:@"Square" inManagedObjectContext:context];
s.width = @(100);
s.height = @(200);


NSFetchRequest * f= [NSFetchRequest fetchRequestWithEntityName:@"Shape"];
f.predicate =[NSPredicate predicateWithFormat:@" radius = 10 OR hight = 200"];;
NSArray * results = [context executeFetchRequest:f error:nil];
NSLog(@"%@",results);

这会在执行获取请求时产生一个要调用的键值异常,因为正方形没有半径,圆形没有高度和宽度。

最佳答案

您只能通过两种方式实现此目的 - 向所有实体添加所有可能的属性(将 radius 添加到 SquarewidthheightCircle)或执行两个获取请求,一个用于圆形,一个用于正方形。我赞成第二种方法。

NSFetchRequest * f = [NSFetchRequest fetchRequestWithEntityName:@"Circle"];
f.predicate =[NSPredicate predicateWithFormat:@" radius = 10"];
NSArray * results = [context executeFetchRequest:f error:nil];

if(results == nil) { results = @[]; }

f = [NSFetchRequest fetchRequestWithEntityName:@"Square"];
f.predicate = [NSPredicate predicateWithFormat:@"height = 200"];

results = [results arrayByAddingObjectsFromArray:[context executeFetchRequest:f error:nil]];

关于core-data - 查询/过滤具有共同父级且不符合键值的核心数据实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24165518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com