Ios 删除魔法记录导入中的孤立对象
magicalrecord中是否内置了处理孤儿的功能?例如,如果我加载以下JSON数据Ios 删除魔法记录导入中的孤立对象,ios,core-data,magicalrecord,Ios,Core Data,Magicalrecord,magicalrecord中是否内置了处理孤儿的功能?例如,如果我加载以下JSON数据 [ { "_id" : "b1", "name" : "brandA"}, { "_id" : "b2", "name" : "brandB"}, { "_id" : "b3", "name" : "brandC"} ] 然后更新数据并删除brandC [ { "_id" : "b1", "name" : "brandA"}, { "_id" : "b2",
[
{ "_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”上的孤立项 删除托管对象中“级别1”上的嵌套孤立项
在
willImport
中的品牌实体上,我们正在搜索与新数据不匹配的产品ID并将其删除。我只是使用它。你的解决方案很有效。谢谢分享。这非常重要,因为我认为这是唯一一个做得很好的代码示例。再次谢谢你,如果可以的话,我会给你100+的。非常简洁的解决方案,谢谢分享。
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];
-(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];
}