淺談RealmSwift

Realm Swift版

Realm swift中文文檔地址:https://realm.io/cn/docs/swift/latest/#local-migrations

Realm 安裝

教程在這(非新手請?zhí)^)
http://www.reibang.com/p/49cde6aeb43a

我用的是
pod 'RealmSwift'

2.Xcode 插件

Xcode插件讓新建Realm模型model很輕松揣钦。用Alcatraz安裝RealmPlugin镀脂。

你使用Xcode新建文件File > New > File… — or ? N,可以看到有一個新建Realm模型create a new realm model的選項必尼。

3. 數(shù)據(jù)庫的使用

1. 創(chuàng)建數(shù)據(jù)模型

以項目中為例,存儲記錄。

import Foundation
import RealmSwift

class Dog: Object {
    @objc dynamic var name = ""
    @objc dynamic var age = 0
}
class Person: Object {
   @objc dynamic var ID = 0
    @objc dynamic var name = ""
    @objc dynamic var age = 0
    var dogs = List<Dog>() //model 嵌套
    var weeks = List<Int>()//數(shù)組
    var strS = List<String>()//數(shù)組
    @objc dynamic var haha = 0
    @objc dynamic var dfd = 0
    @objc dynamic var erer = 0
  override static func primaryKey() -> String? {
        return "ID"
    }//主鍵
}

2. 創(chuàng)建數(shù)據(jù)模型對象

        let otherDog = Dog(value: ["name":"豆豆","age":3])
        let myDog = Dog()
        myDog.name = "Rex"
        myDog.age = 1
        print("name of dog: \(myDog.name)")
        
        let aPerson = Person(value: ["Jane", 30, [myDog,otherDog],[1,2],["df","df"]])
        
        let otherPerson = Person()
        otherPerson.name = "哈哈"
        otherPerson.age = 30
        otherPerson.dogs = List<Dog>()
        otherPerson.dogs.append(myDog)
        otherPerson.weeks = List<Int>()
        otherPerson.weeks.append(1)
        otherPerson.weeks.append(2)
        otherPerson.strS  = List<String>()
        otherPerson.strS.append("sdfsd")

3. 數(shù)據(jù)庫操作(增刪改查)

任何時候都需要獲取Realm實例岗宣,每個線程只需要使用一次即可弄痹。

     // 獲取默認的 Realm 數(shù)據(jù)庫
        let realm = try! Realm()
    //打印地址
        print(realm.configuration.fileURL!)

查詢數(shù)據(jù)

  • 普通查詢
    let lists = realm.object(Person.self)

  • 逐漸查詢:根據(jù)逐漸查詢某張表的某條數(shù)據(jù)罩引,模型必須包含主鍵,否則會崩潰排苍。
    let tem = realm.object(ofType: Person.self, forPromaykey: "1")

  • 條件查詢: 根據(jù)斷言字符串 或者 NSPredicate 謂詞 查詢某張表中的符合條件數(shù)據(jù)
    let tem = realm.object(Person.self).filter("name == %@", "哈哈"

    let predicate = NSPredicate(format: "name contains %@ and age == ","哈哈"沦寂,1)
    let temps = realm.objects(Person.self).filter(predicate)

數(shù)據(jù)排序

    /* 根據(jù)搜索內(nèi)容排序   默認是升序排序*/ 
    let lists = realm.objects(Person.self).sorted(byKeyPath: "age")
    /* 根據(jù)搜索內(nèi)筒降序排序*/
    let lists = realm.objects(Person.self).sorted(byKeyPath: "age", ascending: false)

增加數(shù)據(jù)

        //替換存在的歷史記錄
        let model = Person(value: ["張三",2])
        let lists = realm.objects(Person.self)
        if lists.count > 0 {
            for temp in lists {
                if temp.name == model.name && temp.age == model.age{
                    realm.delete(temp)
                    break
                }
            }
        }
        try! realm.write {
            realm.add(model)
        }

刪除數(shù)據(jù)

    /* 刪除指定類型的數(shù)據(jù)*/
        let tem = realm.objects(Person.self).filter("age == %lu", isNotHomeComing)
        try! realm.write {
            rel.delete(tem)
        }
        resetSubViews()
        self.tableView?.reloadData()

修改數(shù)據(jù)

  • 直接更細內(nèi)容
    let lists = realm.objects(Person.self)
    for model in lists{
        if model.name == "張三" {
            try! rel.write {
                model.name = ""
            }
            break
        }
    }

  • 根據(jù)主鍵更新

如果在model類型中設(shè)置了主鍵的話,那么你可以使用realm().add(_:update:)

守得于開見月明淘衙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末传藏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌毯侦,老刑警劉巖哭靖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叫惊,居然都是意外死亡款青,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門霍狰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抡草,“玉大人,你說我怎么就攤上這事蔗坯】嫡穑” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵宾濒,是天一觀的道長腿短。 經(jīng)常有香客問我,道長绘梦,這世上最難降的妖魔是什么橘忱? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮卸奉,結(jié)果婚禮上钝诚,老公的妹妹穿的比我還像新娘。我一直安慰自己榄棵,他們只是感情好凝颇,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疹鳄,像睡著了一般拧略。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘪弓,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天垫蛆,我揣著相機與錄音,去河邊找鬼杠茬。 笑死月褥,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的瓢喉。 我是一名探鬼主播宁赤,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼栓票!你這毒婦竟也來了决左?” 一聲冷哼從身側(cè)響起愕够,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎佛猛,沒想到半個月后惑芭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡继找,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年遂跟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婴渡。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡幻锁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出边臼,到底是詐尸還是另有隱情哄尔,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布柠并,位于F島的核電站岭接,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏臼予。R本人自食惡果不足惜鸣戴,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粘拾。 院中可真熱鬧葵擎,春花似錦、人聲如沸半哟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寓涨。三九已至,卻和暖如春氯檐,著一層夾襖步出監(jiān)牢的瞬間戒良,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工冠摄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糯崎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓河泳,卻偏偏與公主長得像沃呢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拆挥,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Realm 淺談Swift版 首先先附上Realm swift中文文檔地址:https://realm.io/cn...
    shuigenObba閱讀 7,284評論 2 3
  • 1薄霜、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,988評論 3 119
  • 不知道就這么隔著窗戶看他看了多久,我是一個死宅。工作也是幫別人打怪刷級代打游戲惰瓜,這樣更加增加了我宅的屬性否副。 一天我...
    阿貨閱讀 285評論 0 1
  • 一年一度备禀,斗轉(zhuǎn)星移, 不變的是新生初來乍到的不適奈揍; 一屆一屆曲尸,薪火相傳, 永恒的是新生乍寒還暖的感動打月! 天氣很好队腐,...
    楊文倩閱讀 561評論 0 1
  • 你的恩典鋪滿天邊 有心的人看得見 一個人時安靜而豐盛 二個人溫暖而踏實
    Z霞閱讀 174評論 0 0