gpt4 book ai didi

iphone - CoreData 通过属性和关系比较两个 NSManagedObjects

转载 作者:行者123 更新时间:2023-12-03 20:06:05 24 4
gpt4 key购买 nike

我有过滤器对象。它有几个属性和关系。如果没有人具有相同的属性和关系,我想创建新的过滤器对象。如何做到这一点?

最佳答案

我会选择更通用的方法..我将获取该对象的 NSEntityDescriptions 并使用该描述中的所有属性构建一个谓词。

很像..

- (void)insertIfUnique:(NSManagedObject*)obj inContext:(NSManagedObjectContext*)ctx {

NSMutableString *format = [NSMutableString string];

NSEntityDescription *desc = obj.entity;
NSArray *attrs = desc.attributeKeys;

for(NSString *attr in attrs) {
if(format.length)
[format appendString:@" AND "];
[format appendFormat:@"%@==%@", attr, [obj valueForKey:attr]];
}

NSPredicate *p = [NSPredicate predicateWithFormat:format];
NSFetchRequest *f = [[NSFetchRequest alloc] initWithEntityName:desc.name];
f.predicate = p;
if([ctx countForFetchRequest:f error:nil]==0)
[ctx insertObject:obj];

}

关于iphone - CoreData 通过属性和关系比较两个 NSManagedObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13290317/

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