美文网首页Realm
realm3.0 数据库进阶(更新中)

realm3.0 数据库进阶(更新中)

作者: aqaqa | 来源:发表于2018-02-12 14:45 被阅读6次

realm可以说对开发者非常友好,基础的东西看两遍中文文档就了解了,不做搬运工了。文章说说文档里面的注意点,和文档之外的实用的东西。希望你们用的上。

realm基础:

github地址:https://github.com/realm/realm-cocoa
中文文档地址:https://realm.io/cn/docs/objc/latest/

realm进阶:

  1. 数据库迁移
// 数据迁移位置最好在数据库初始化的时候,或者说在使用realm数据库之前,appDelegate也行
// * 很重要 * ,数据库迁移注意数据库名称,不要和默认数据库混淆(这里注意除非使用默认配置数据库,否则任何操作都带上config比较稳)

// 有点鸡肋,正式环境不能让你随意删除旧数据
config.deleteRealmIfMigrationNeeded = YES; 

// 数据库方法,sdk提供了几个迁移的方法可以自己看看
// 2者只能取其一,config.deleteRealmIfMigrationNeeded = YES; 下面的block就不会走了。
config.migrationBlock = ^(RLMMigration *migration , uint64_t oldSchemaVersion) {};
  1. 数据冗余处理方式
// realm暂时不支持循环删除子节点(RLMObject)里面的数据,需要自己手动删除
// addOrUpdata:(必需有主键,subModel可以没有主键)
// 1子节点有主键,更新的时候不用管,删除的时候循环删除子节点,极端情况(极端情况:多个model公用一个主键相同的子节点,删除一个submodel,导致其他用这个submodel的链接也没有了)
// 2子节点无主键,更新的时候要先删除老子节点,删除的时候循环删除子节点 (没有上面公用同一个子节点的问题)
  1. 数据结果集分页
//realm不支持分页,需要自己手动删除,他们认为数据查询很快把整个结果集给你,你自己处理就好
// 分页查询数据
- (NSArray *)arrayWithPageNum:(NSInteger)pageNum pageSize:(NSInteger)pageSize results:(RLMResults *)results {
    NSMutableArray *pageArray = [NSMutableArray array];
    for (NSInteger i = pageNum * pageSize; i < pageNum * pageSize + pageSize; i++) {
        if (i >= results.count) break;
        id object = results[i];
        [pageArray addObject:object];
    }
    return pageArray;
}
  1. 数据结果集排序
  2. 数据库建表
  3. 数据操作通知回调
// api提供了五种之多,选择集合通知和对象通知【删除和修改】处理就可以
  1. 数据库打开和关闭数据库

异步数据库
远程数据库
压缩数据库
等等等等其他高级功能。

realm注意事项:

  • 指定数据库config,因为不指定就成默认数据库了。
  • 异步记得要从新生成realm对象
  • 删除更新对象什么的,先去数据库查询,找到了再操作。
  • 代码入侵性考虑

相关文章

  • realm3.0 数据库进阶(更新中)

    realm可以说对开发者非常友好,基础的东西看两遍中文文档就了解了,不做搬运工了。文章说说文档里面的注意点,和文档...

  • 在python中 使用Mysql

    在数据库中插入数据 在数据库中更新数据 从数据库中抓取数据

  • swift进阶总汇(更新中)!

    更新中。。。如果以上文章整理得有什么问题都欢迎留言,欢迎关注马化腾绿色公众号:编程大鑫

  • ssm框架进阶-----统一错误返回处理

    文章链接 ssm入门 ssm框架进阶-----数据库增删改查3.ssm框架进阶-----数据库多表查询 正文 1....

  • SQL 命令

    SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 ...

  • 你知道怎么解决DB读写分离,导致数据不一致问题吗?

    目录 前言 先更新数据库,再更新缓存 先更新缓存,再更新数据库 先删除缓存,再更新数据库 先更新数据库,再删除缓存...

  • React 进阶目录

    React进阶(附录一)构建工具改造过程记录 React进阶(一)React进阶更新计划浅谈React进阶(二)为...

  • 笔记|Markdown学习笔记源码(图片版)

    更新说明(4.16更新)感谢tamlok同学协助解决 编辑器中MD不能显示表格的问题。有Markdown的进阶用法...

  • Julia中的分数

    微信公众号:Julia语言每周一三五更新Julia语言;每周二四六更新Python进阶; Julia中的分数 分数...

  • Julia中的复数

    微信公众号:Julia语言每周一三五更新Julia语言;每周二四六更新Python进阶; Julia中的复数 全局...

网友评论

    本文标题:realm3.0 数据库进阶(更新中)

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