【发布时间】:2014-11-24 11:59:51
【问题描述】:
我正在努力删除领域对象及其 RLMArray 子(和子子)对象!
下图是当前的realm-structure(Realm-Browser截图):
如您所见,目前创建了三个 RLMTopoResult 对象,每个对象都有 86 个 RLMCriteria 作为子数组。 (不可见的是,这些 RLMCriteria 中的每一个都有自己的 RLMStatistics-Array - 这就是为什么 RLMStatistics-objects 与 RLMCriteria-objects 一样多的原因。
现在,我们的想法是删除一个 RLMTopoResult(带有一个根据 TopoNrRLM 过滤的预测器)!
我应用以下代码:
- (void) removeObjects_at_TopoNr_from_LocationRLM :(NSUInteger)TopoNr :(NSString *)folderName :(NSString *)fileName {
RLMRealm *realm = [RLMRealm realmWithPath:[self get_TopoResultRLM_FilePath :folderName :fileName]];
RLMResults *resultTopoResult = [RLMTopoResult allObjectsInRealm:realm];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TopoNrRLM == %d", TopoNr];
RLMResults *resultsTopoNr = [resultTopoResult objectsWithPredicate:predicate];
if ([resultsTopoNr count] > 0) {
if (TopoNr <= (int)[resultsTopoNr count]) {
[realm beginWriteTransaction];
[realm deleteObject:[resultsTopoNr firstObject]];
[realm commitWriteTransaction];
}
else {
NSLog(@"Fail...trying to remove TopoResult-object with TopoNr bigger to object-count");
}
}
else {
NSLog(@"Fail...trying to remove TopoResult-object in empty Realm");
}
}
使用 TopoNr = 2 运行上述方法会删除(如预期的那样)RLMTopoResult Nr2(见下面的结果图片)--> 但是,不幸的是,它不会删除它的 Array-Children(和子子项)!!!删除 RLMTopoResult-Nr2 后,仍有 3x86=258 个 RLMCriteria(还有 258 个 RLMStatistics)。但预期为 2x86=172 !!!!
如何自动删除附加到相应 RLMTopoResult 的 86 个 RLMCriteria(及其 86 个 RLMStatistics)子项???
任何帮助表示赞赏!
下图是删除TopoResult Nr2后的结果(上面的代码): (预计有 172 个 RLMCriteria 而不是 258 个!...还有什么问题??...)
【问题讨论】:
标签: ios objective-c realm