reaml数据库的基本用法

2017-10-31  本文已影响27人  赤焰军少帅林殊

附上github链接https://github.com/15118130757/ReamlUser
导入库 并添加头文件 创建模型对象( 数据库可视化软件Realm Browser AppStore直接下载)

#import <Realm/Realm.h>

打开数据库并做版本数据库编号

RLMRealmConfiguration *config =[RLMRealmConfiguration defaultConfiguration];
    // 数据库本地路径
    config.schemaVersion=2;
    // 设置闭包,这个闭包将会在打开低于上面所设置版本号的 Realm 数据库的时候被自动调用
    config.migrationBlock = ^(RLMMigration *migration, uint64_t oldSchemaVersion) {
        NSLog(@"%llu",oldSchemaVersion);
        
        // 目前我们还未进行数据迁移,因此 oldSchemaVersion == 0
        if (oldSchemaVersion < 1) {
            // 什么都不要做!Realm 会自行检测新增和需要移除的属性,然后自动更新硬盘上的数据库架构
        }
    };
    
    [RLMRealmConfiguration setDefaultConfiguration:config];
    
    // 现在我们已经告诉了 Realm 如何处理架构的变化,打开文件之后将会自动执行迁移
    [RLMRealm defaultRealm];
    NSLog(@"%@",  config.fileURL);

存数据

NSLog(@"存数据");
    NSString* str=nil;
    for (int i=0; i<2; i++) {
        
        if (i==0) {
            str=@"15118130757";
        }else{
            str=@"15060193253";
        }
        _messreaml=[[Messagereaml alloc]init];
        _messreaml.sex=@"男";
        _messreaml.nickName=@"萌妹子";
        _messreaml.otherDwID=str;
        RLMResults<Messagereaml *> *temp = [Messagereaml objectsWhere:@"otherDwID = %@",str];
        NSLog(@"%@",temp);
        if (temp.count == 0) {
            [[RLMRealm defaultRealm] transactionWithBlock:^{
                [[RLMRealm defaultRealm] addObject:_messreaml];
            }];
        } else {
            NSLog(@"数据库已经有该条数据不需要再存了");
        }
    }

查询数据

  NSLog(@"查询");
    NSString* strid=@"15118130757";
    _messreaml=[[Messagereaml objectsWhere:@"otherDwID=%@",strid]firstObject];
    NSLog(@"取出来的数据%@",_messreaml.sex);

更改数据

NSLog(@"改数据");
    NSString* strid=@"15118130757";
    _messreaml=[[Messagereaml objectsWhere:@"otherDwID=%@",strid]firstObject];
    NSLog(@"取出来的数据%@",_messreaml.sex);
    //改数据
    if (_messreaml.sex) {
        [[RLMRealm defaultRealm] transactionWithBlock:^{
            _messreaml.nickName=@"白富美";
            //再存
            [[RLMRealm defaultRealm] addObject:_messreaml];
        }];
    }
   
    //        dispatch_async(dispatch_queue_create("background", 0), ^{//开启线程存
    //            @autoreleasepool {
    //
    //                Messagereaml* messreaml=[[Messagereaml objectsWhere:@"otherDwID = %@",str] firstObject];
    //                RLMRealm *realm = [RLMRealm defaultRealm];
    //                [realm beginWriteTransaction];
    //                messreaml.sex=@"女";
    //                [realm commitWriteTransaction];
    //
    //            }
    //        });//更新某一条数据 这个写法与上面的写法是一样的

删除数据

 NSLog(@"删除某一条数据");
    NSString* str=@"15118130757";
    RLMResults<Messagereaml *> *temp = [Messagereaml objectsWhere:@"otherDwID = %@",str];
    RLMRealm *realm = [RLMRealm defaultRealm];
    [realm beginWriteTransaction];
    [realm deleteObjects:temp];//删除某条数据
    [realm commitWriteTransaction];

删除所有数据

    RLMRealm *realm = [RLMRealm defaultRealm];
    [realm beginWriteTransaction];
    [realm deleteAllObjects];//删除所有数据
    [realm commitWriteTransaction];

查询所有数据

    RLMResults<Messagereaml *> *temp = [Messagereaml allObjects];
    NSLog(@"查询所有数据%@",temp);
上一篇下一篇

猜你喜欢

热点阅读