【问题标题】:removeObjects from RLMResults从 RLMResults 中删除对象
【发布时间】:2016-06-27 09:42:59
【问题描述】:

如何从 RLMResults 中删除对象。我的意思是在 NSMutableArray 中有一个类似

的函数

[self.dogs removeAllObjects]

RLMResults 或 RLMArray 有类似的功能吗?

【问题讨论】:

    标签: ios objective-c realm realm-cocoa


    【解决方案1】:

    RLMArrayremoveAllObjects 存在这种方法。这意味着您取消了该对象与数组中所有其他链接对象的关联。

    RLMResults 没有这样的方法,因为此类的实例始终代表您查询的最新状态,只有在您修改基础数据时才能改变它。因此,如果您在列表上进行查询,则可以通过从列表中删除对象来隐含地实现这一点。如果您查询所有对象(/一个表),那么您需要从领域中删除对象或修改它们以使它们不再与您的查询匹配。

    【讨论】:

      【解决方案2】:

      将所有对象从您的 RLMResults 复制到 NSMutableArray 并对其进行操作。

      【讨论】:

        【解决方案3】:

        你可以删除

        RLMResults *tableDataArray;    
        tableDataArray=[Dog allObjects];
        [[RLMRealm defaultRealm] beginWriteTransaction];
        //Deleting All Objects 
        [[RLMRealm defaultRealm]deleteAllObjects];
        //Remove particular object
        [[RLMRealm defaultRealm]deleteObject:[tableDataArray objectAtIndex:indexPath.row]];  // I use this in didSelectRowAtIndexPath
        [[RLMRealm defaultRealm] commitWriteTransaction];
        

        添加

        RLMRealm *realm = [RLMRealm defaultRealm];
        [realm beginWriteTransaction];
        Dog *dog = [[Dog alloc] init];
        dog.name=@"Puppy";
        dog.city=@"New York";
        [realm addObject:dog];
        [realm commitWriteTransaction];
        

        用于更新

        RLMRealm *realm = [RLMRealm defaultRealm];
        [realm beginWriteTransaction];
        dog.name=@"Rosie";
        dog.city=@"Washington";
        [realm commitWriteTransaction];
        

        【讨论】:

        • 好吧。谢谢你的帮助。 :) 但我不想从领域中永久删除。我只想在将新结果添加到该数组之前从内存中删除。
        • 如果你想从数组中删除并添加它,你应该按照上面的代码。
        猜你喜欢
        • 2021-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-03
        • 2018-07-30
        • 2021-06-12
        • 2012-10-19
        相关资源
        最近更新 更多