Edited at

Swift3でRealmSwift(サンプルあり)


アップデートしました

Xcode 10.0

Swift 4.2

Realm 3.12.0


概要

目新しくもないんですが、RealmSwiftを使って、

なんちゃって家計簿的なサンプルを作ってみました。

概要しか記載してないので、ソース見たい方はどうぞ。

https://github.com/koji-nishida/RealmSwiftSample/tree/master/RealmSample


完成図


1. 導入


  1. プロジェクト作成

    まずはプロジェクトを作成。
    今回は'RealmSample'としました。

  2. インストール

    プロジェクト直下にて以下コマンド実行

    $ pod init

    'Podfile'というファイルが作成されるので、以下追記

    pod 'RealmSwift'

    インストール
    $ pod install


2. コード作成


アプリ概要

・品名と金額を入力して「登録」ボタンを押すと、保存される

・登録日時が新しいものから表示する

ただそれだけっ...


手順

・画面作る(storyboard)

こんな感じです

・Realmオブジェクト作成


サポートしている型や、Optional/非Optionalについては、公式?を参照下さい。

https://realm.io/jp/docs/swift/latest/#section-11


Item.swift


import RealmSwift

class Item: Object{
// 品名
@objc dynamic var name: String? = nil
// 金額
@objc dynamic var price = 0
// 登録日時
@objc dynamic var created = Date()
}


・保存


ViewController.swift

        // 入力値をセット

let item:Item = Item()
item.name = self.textName.text
if ((self.textPrice.text?.characters.count)! > 0) {
item.price = Int(self.textPrice.text!)!
}

// 保存
let realm = try! Realm()
try! realm.write {
realm.add(item)
}


・一覧取得


ViewController.swift

override func viewDidLoad() {

super.viewDidLoad()

// デフォルトRealmを取得
let realm = try! Realm()
// 一覧を取得:金額を条件に、登録日時が新しい順でソート
self.itemList = realm.objects(Item.self).filter("price > 0").sorted(byProperty: "created", ascending: false)
}


と、だいぶ端折りましたが、これだけといえばこれだけです。

コードの詳細はgithub見ていただければと。


3. 最後に

導入が簡単で、比較的直感的に使えて便利、といったところでしょうか。

色々な型に対応していて、ソートもできて、ページングの考慮もする必要がないらしいので。

Auto Incrementがなくて不便という記事は見かけましたが。

じっくり使ってみたわけではないので、かゆいところに手が届かない的なことも当然あるんでしょうかね?