【RealmSwift】使える演算子

偏ったものしか使わないので、これを機に比較演算子についてまとめてみました!
いろいろあって、変なテンションで記事を書いてます (∩^o^)⊃━☆゜.*

前提条件

本を管理するためのデータベースに、以下のデータが登録されてるとします。

let realm = try! Realm()
try! realm.write {
    realm.add([Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000]),
               Book(value: ["name": "Swift実践入門", "price": 3500]),
               Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700]),
               Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500]),
               Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])])
}

このデータベースを使って演算子の使い方をまとめますぅ

演算子まとめ

比較演算子

演算子 意味
==(=) 左辺値と右辺値は等しい
!=(<>) 左辺値と右辺値は等しくない
> 左辺値は右辺値を超過
>=(=>) 左辺値は右辺値以上
< 左辺値は右辺値未満
<=(=<) 左辺値は右辺値以下
BETWEEN 左辺値は右辺値の範囲内

こんなもんですかね。
個人的にいつも != を使っていて、<> は知りませんでした…w

次に Realm 上での使い方を順番に記載します!
コメントはフィルター結果を記載してますぅ

let realm = try! Realm()
let results = realm.objects(Book.self)
results.filter("price == 3000")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])

results.filter("price != 3000")
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])

results.filter("price > 3000")
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])

results.filter("price >= 3000")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "Swift実践入門", "price": 3500]),
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])

results.filter("price < 3000")
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])

results.filter("price <= 3000")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])

results.filter("price BETWEEN {3000, 4000}")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])

論理演算子

演算子 意味
AND(&&) 論理積
OR(||) 論理和
NOT(!) 否定
let realm = try! Realm()
let results = realm.objects(Book.self)
results.filter("price == 3500 AND name == 'Swift実践入門'")
// Book(value: ["name": "Swift実践入門", "price": 3500])

results.filter("price == 3500 OR name == 'Swift実践入門'")
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])

results.filter("!(price == 3500)")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])

文字列の比較演算子

演算子 意味
BEGINSWITH 前方一致
ENDSWITH 後方一致
CONTAINS 部分一致
LIKE パターンマッチング
let realm = try! Realm()
let results = realm.objects(Book.self)
results.filter("name BEGINSWITH 'Swi'")
// Book(value: ["name": "Swift実践入門", "price": 3500])

results.filter("name ENDSWITH 'ミング'")
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700]),

results.filter("name CONTAINS 'Swi'")
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])

results.filter("name LIKE '?発'")    // ?は任意1文字
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])

さいごに

まぁ特に目新しいことも少なくって感じですけども!
初心者向けですね ε=(。ノ・ω・)ノ

違うよ!とかこういう方法あるよ!ってのがあれば教えてください。
では( ¯·ω·¯ )

Realm
スポンサーリンク

コメント