gpt4 book ai didi

ios - 移除魔法记录导入中的孤立对象

转载 作者:可可西里 更新时间:2023-11-01 04:23:27 38 4
gpt4 key购买 nike

magicalrecord 中有没有内置的东西来处理孤儿?例如,如果我加载以下 JSON 数据...

[
{ "_id" : "b1", "name" : "brandA"},
{ "_id" : "b2", "name" : "brandB"},
{ "_id" : "b3", "name" : "brandC"}
]

然后数据得到更新,brandC 被移除

[
{ "_id" : "b1", "name" : "brandA"},
{ "_id" : "b2", "name" : "brandB"}
]

更重要的是,如何删除孤立的嵌套对象,例如下面的 productB

[
{ "_id" : "b1",
"name" : "brandA"
"products" : [
{"_id" : "p1", "name" : "productA" },
{"_id" : "p2", "name" : "productB" }
]
},
{ "_id" : "b2",
"name" : "brandB"
"products" : [
{"_id" : "p3", "name" : "productC" },
{"_id" : "p4", "name" : "productD" }
]
}
]

最佳答案

想通了,但如果有人想提出更好的解决方案,请提出。

在加载时删除“0 级”的孤儿

NSArray *newdata   =  [];//AN ARRAY OF NEW DATA
NSArray *idList = [newdata valueForKey:@"_id"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT(_id IN %@)", idList];
[MRBrand MR_deleteAllMatchingPredicate:predicate];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];

删除托管对象中“级别 1”上的嵌套孤儿

-(void)willImport:(id)data{
NSArray *idList = [data[@"products"] valueForKey:@"_id"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT(pid IN %@) AND brand.bid == %@", idList, self.bid];
[Product MR_deleteAllMatchingPredicate:predicate inContext:self.managedObjectContext];
}

willImport 中的品牌实体上,我们正在搜索与新数据不匹配的产品 ID 并将其删除。

关于ios - 移除魔法记录导入中的孤立对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24249857/

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