Realm自增主键的解决方案 以及 Realm简单Demo


2016年08月04日星期四


Demo地址

  • Realm数据库,不支持自增主键怎么搞?直接上干货(我用的是swift,其他语言的可作参考)
    <a href="https://github.com/Mqhong/Realm_SimpleExample">代码在这里</a>
import Foundation
import RealmSwift

class Person: Object {
    dynamic var id = NSUUID().UUIDString
    dynamic var name = ""
    dynamic var birthdate = NSDate()
    let dogs = List<Dog>()
    
    override static func primaryKey() ->String?{
        return "id"
    }
}

  • 这种方式是使用UUID 每次都生成不会重复的主键,在你新建的时候,就会自动的生成,如果这样生成的主键,重复了的话,请告诉我,因为下面我会介绍第二种。但是这种会比较昂贵~~~~ 是的, 昂贵!

类文件中这么写~

import Foundation
import RealmSwift

class Person: Object {
    dynamic var id = 0
    dynamic var name = ""
    dynamic var birthdate = NSDate()
    let dogs = List<Dog>()
    
    override static func primaryKey() ->String?{
        return "id"
    }
    
    func IncrementaID() -> Int {
        let realm = try! Realm()
        let RetNext: NSArray = Array(realm.objects(Person).sorted("id"))
        let last = RetNext.lastObject
        if RetNext.count > 0 {
            let valor = last?.valueForKey("id") as? Int
            return valor! + 1
        } else {
            return 1
        }
    }
    
}

使用的时候

func Addddd(sender: AnyObject) {
        print(#function)
        let pp = Person()
        pp.id  = pp.IncrementaID()
        pp.name = #function
        rdao.Insert_Realm(person: pp)//这里是调用的方法
    }

就是这样了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 由于最近项目中在用Realm,所以把自己实践过程中的一些心得总结分享一下。 Realm是由Y Combina...
    一缕殇流化隐半边冰霜阅读 73,577评论 213 517
  • 跨平台:现在很多应用都是要兼顾iOS和Android两个平台同时开发。如果两个平台都能使用相同的数据库,那就不用考...
    CoderZS阅读 2,558评论 2 16
  • 这篇直接搬了一份官方文档过来看的 由于之前没用markdown搞的乱七八糟的 所以重新做了一份 后面看到官网...
    石丘阅读 18,060评论 14 24
  • 我连续上四天的课,都觉得特别累,辛苦我的恩师永静老师了,老师你就是我的标杆,你是我努力的方向。当我没法去帮你分担更...
    黄玉翠阅读 272评论 2 0
  • 一块欲哭无泪的黑布飞向南 天空顿时揭开秀丽的容颜 傍晚的蓝 浸润眼底流动的万水千山 抬眼,步履慢 等一片迅疾而辽阔...
    圆善阅读 326评论 6 9