iOS领域级联删除

时间:2016-02-05 15:30:59

标签: ios objective-c realm

我的模特是: 第一个模型 - Job: idx, title, description

第二个模型 - Specialization: idx, title, RLMArray<Job> jobs

如果我想删除作业,我该怎么办?我想删除与该作业相关的所有规格。提前谢谢你。 我的代码是:

[self.storage beginWriteTransaction];
RLMResults *specs = [MBSpecialization objectsInRealm:self.storage where:@"%@ IN jobs", job];
                for (MBSpecialization *spec in specs) {
                    [self.storage deleteObjects:spec];
                }
[self.storage deleteObject:job];
[self.storage commitWriteTransaction];

1 个答案:

答案 0 :(得分:2)

如果要删除包含要删除的作业的所有专精,即使他们还有其他作业:

[self.storage beginWriteTransaction];
[self.storage deleteObjects:[job linkingObjectsOfClass:MBSpecialization.className forProperty:@"jobs"]];
[self.storage deleteObject:job];
[self.storage commitWriteTransaction];

或者,您可能只想清除在删除此作业后不再有任何作业的所有专业化:

[self.storage beginWriteTransaction];
[self.storage deleteObject:job];
[self.storage deleteObjects:[MBSpecialization objectsInRealm:self.storage where:@"jobs.@count = 0"]];
[self.storage commitWriteTransaction];