Reputation: 1243
My models are:
First model - Job: idx, title, description
Second model - Specialization: idx, title, RLMArray<Job> jobs
What should I do if I want to delete job and I'd like to delete all specs related to the job. Thanks you in advance. My code is:
[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];
Upvotes: 2
Views: 1044
Reputation: 8138
If you want to delete all specializations containing the job being deleted even if they still have other jobs:
[self.storage beginWriteTransaction];
[self.storage deleteObjects:[job linkingObjectsOfClass:MBSpecialization.className forProperty:@"jobs"]];
[self.storage deleteObject:job];
[self.storage commitWriteTransaction];
Alternatively, you may want to just clean up all specializations which no longer have any jobs after this one is deleted:
[self.storage beginWriteTransaction];
[self.storage deleteObject:job];
[self.storage deleteObjects:[MBSpecialization objectsInRealm:self.storage where:@"jobs.@count = 0"]];
[self.storage commitWriteTransaction];
Upvotes: 2