Realmのfilterメソッドの使い方

[Swift] [Realm]

Realmのfilter()メソッド普通に書くと抽出はできません

let array = try! Realm().objects(Posts).filter('category == 1')

または、以下のように文字列を連結した形のコードであるとかも正しく抽出できません。

let string = 'news'
let array = try! Realm().objects(Posts).filter('category == '+ string)

正しいfilter()の使い方

filter()メソッドは、変数や文字列の代入するコードを記述することで、正しく条件を抽出することができます。

1つの条件をフィルタリングする場合

let array = try! Realm().objects(Posts).filter('category == %@', text)

2つの条件をフィルタリングする場合

let array = try! Realm().objects(Posts).filter('category == %@ && name == %@', text, name)

NSPredicateを使う方法

Foundationに存在しているNSPredicateというクラスを使用すると、条件文を別の変数として用意することができるのでとても便利です。

let predicate = NSPredicate("category", equal: "news")
let array =  try! Realm().objects(Posts).filter(predicate)

Posted_at:2020-04-25