美文网首页Realm
realm数据库通用增、删方法

realm数据库通用增、删方法

作者: 东岳哥哥 | 来源:发表于2018-08-02 10:41 被阅读88次

realm数据使用还是有很多方便之处的,但是使用不当的话,会觉得比较啰嗦的。

realm的数据对象RLMObject是直接连接到物理存储的数据库,修改就直接改了数据库里的数据了,也因此在对RLMObject类型的数据进行操作时,要写:

RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
    //do something
[realm commitWriteTransaction];

有种避免的方法就是不持有这个指向realm数据库的对象,如alloc,init实例化一个A对象,此时它没有存储到realm数据库,跟oc的对象操作是没有啥区别;但是当存储到realm数据库,且指向了这个返回的对象,或是在realm的事务里创建的对象就会直接关联到数据库。
下面这方式可以避免:按需是否持有返回的对象

+ (RLMObject *)addObjectToDB:(RLMObject *)obj {

    RLMRealm *realm = [RLMRealm defaultRealm];
    Class class = (RLMObject *)NSClassFromString([NSString stringWithUTF8String:object_getClassName(obj)]);
    [realm beginWriteTransaction];
    obj = [class createOrUpdateInRealm:realm withValue:obj];
    [realm commitWriteTransaction];
    return obj;
}
+ (void)deletDBObjects:(NSArray<RLMObject *> *)objs {
    for (RLMObject *obj in objs) {
        [self deletDBObject:obj];
    }
}

+ (void)deletDBObject:(RLMObject *)obj {
    RLMRealm *realm = [RLMRealm defaultRealm];
    Class class = (RLMObject *)NSClassFromString([NSString stringWithUTF8String:object_getClassName(obj)]);
    if (![class primaryKey]) {
        return;
    }
    
    RLMObject *rlmObj = [class objectInRealm:realm forPrimaryKey:[obj valueForKey:[class primaryKey]]];
    if (!rlmObj) {
        return;
    }
    [realm transactionWithBlock:^{
        [realm deleteObject:rlmObj];
    }];
}

一开始的设想就是建立一个通用的方法,方便各种类型对象的操作,然后就是尽量的简化工程代码。

相关文章

  • realm数据库通用增、删方法

    realm数据使用还是有很多方便之处的,但是使用不当的话,会觉得比较啰嗦的。 realm的数据对象RLMObjec...

  • iOS-realm使用总结

    先从数据库最基本的增删查改来看realm怎么用 // 增 // 删 // 查 // 改 realm其余的关系与属性...

  • iOS数据库

    MagicalRecord Realm数据库 Realm数据库基础教程 FMDB FMDB 使用方法 SQL (F...

  • python3中列表list常用操作

    list 列表的增、删、改、查 增: 删: 改 查 其它方法

  • python基础-03

    python操作mysql数据库 创建数据表 数据表的 增 删 查 改 增 查 改 删

  • mongodb常用的操作

    帮助help 创建、切换数据库 增 删 改 查

  • JS补充15

    对象 属性的增,删,改,查 增:对象.属性=“方法”; 删:delete.对象.原有属性; 查...

  • Django-对数据库进行增删查改

    引言 假设有如下的model定义,下面将对该model对应的数据库进行增删改查操作。 增 方法一: 方法二: 删 ...

  • 003,数据库的增,删,改操作

    数据库的操作主要是【增,删,改,查】,但是今天先学习一下比较简单的【增,删,改】,后面再单独学习【查】; 增 - ...

  • 2018-09-25数据库增删改&备份&统计类界

    一、复习 二、数据库操作(增、删、改) insert into(增)*单条数据增加 insert into 表名 ...

网友评论

    本文标题:realm数据库通用增、删方法

    本文链接:https://www.haomeiwen.com/subject/uwljvftx.html