Realm简单使用

  1. Realm是用来代替CoreData和SQLite的数据存储方式,支持的类型有Bool,Int16,Int32,Int64,Double,Float,String,Date,Data

  2. 在swift中,创建一个Dog类,继承自Object,如下所示:

     class Dog: Object {
     @objc dynamic var name = ""
     @objc dynamic var age = 0
     @objc dynamic var key = 0
     //主键
     override static func primaryKey() -> String? {
     return "key"
     }
     }
    

    然后在创建一个Person类,同样继承自Object类,在Person类中可能拥有多个dog属性,如下:

     class Person: Object {
     @objc dynamic var name = ""
     @objc dynamic var age = 0
     @objc dynamic var isEat = false
     var dogs = List<Dog>()
     }
    

    在Realm中List相当于swift中的数组,要声明List中的数据类型。

  3. 增,删,改,查

    • 添加一个dog对象

        let realm = try! Realm()
        let myDog = Dog()
        
        myDog.name = "canader"
        myDog.key = 1
        myDog.age = 20
        
        //增
        try! realm.write {
        realm.add(myDog)
        }
        
        //删
        try! realm.write {
        
            //删除myDog
        realm.delete(myDog)
        //删除所有
        realm.deleteAll()
        }
      
        //改
        try! realm.write {
        myDog.name = "JACK"
        }
        
        //通过主键更新
         try! realm.write {
            //如果有主键为默认值的对象,那么久更新
        realm.add(myDog, update: true)
        }
        
        //通过键值编码更新属性
        try! realm.write {
        myDog.setValue("Rose", forKeyPath: "name")
        }
        
        //查
        //获取所有的dog属性
        let result = realm.objects(Dog.self)
        
        //过滤获取到的Dog属性
        let result = realm.objects(Dog.self).filter("age > 0")
      
    • 添加一个person对象

        //增
        let dog2 = Dog()
        dog2.name = "dog2"
        dog2.age = 10
        dog2.key = 2
      
        let person1 = Person()
        person1.name = "wangwu"
        person1.age = 20
        person1.isEat = true
        //给Person的dogs属性添加对象
        person1.dogs.append(myDog)
        person1.dogs.append(dog2)
        try! realm.write {
        realm.add(person1)
        }
        
        
        //删
        try! realm.write {
        realm.delete(persons)
        }
        
        
        //改
        let result = realm.objects(Person.self)
        print(result.count)
        for i in 0..<result.count {
        let p = result[i]
        print(p.name, p.dogs.count)
        }
        
        //查
        let persons = realm.objects(Person.self).filter("age == 20")
        for i in 0..<persons.count {
        let p = persons[i]
        try! realm.write {
          p.name = "modifity"
        }
        print(p.name)
        }
      
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据库——android四大存储之一,说实话已经很久没有使用了,平时是要使用网络与文件存储,除非是需要离线模式,或...
    浅笑夏沫阅读 1,054评论 0 0
  • 目录 Getting StartedGetting HelpModelsRelationshipsWritesQu...
    Jafir阅读 8,456评论 2 4
  • realm 介绍及安装 简介 Realm 是一个跨平台的移动终端数据库,支持 iOS(Swift 和 Object...
    撸码是一种情怀阅读 1,671评论 0 5
  • 这篇直接搬了一份官方文档过来看的 由于之前没用markdown搞的乱七八糟的 所以重新做了一份 后面看到官网...
    石丘阅读 18,079评论 14 24
  • 文/白澜 昨天我上晚班,所以就利用白天的几个小时去看了偶像的电影,最近朋友圈、知乎、豆瓣、微博都被《悟空传》刷屏了...
    维娜陈阅读 679评论 0 4