モデルデータ
//レシピモデル class Recipe: Object { @objc dynamic var name = "" @objc dynamic var category = "" @objc dynamic var country = "" @objc dynamic var season = "" let ingredients = List() //レシピと材料は1対多の関係 override static func primaryKey() -> String? { return "name" } } //材料モデル class Ingredient: Object { @objc dynamic var name = "" let recipes = LinkingObjects(fromType: Recipe.self, property: "ingredients") }
モデルデータの格納、検索、表示
do { //トマトパスタ、カツ丼、カレーの3つのレシピのモデルを作成 let realm = try Realm() let dictionary1: [String: Any] = ["name": "トマトパスタ", "category": "パスタ", "country" : "イタリア", "season" : "春", "ingredients":[["name": "トマト"],["name": "にんにく"]] ] let dictionary2: [String: Any] = ["name": "カツ丼", "category": "丼", "country" : "日本", "season" : "夏", "ingredients":[["name": "たまねぎ"],["name": "卵"]] ] let dictionary3: [String: Any] = ["name": "カレー", "category": "カレー", "country" : "日本", "season" : "夏", "ingredients":[["name": "たまねぎ"],["name": "にんじん"],["name":"じゃがいも"]] ] let recipe1 = Recipe(value: dictionary1) let recipe2 = Recipe(value: dictionary2) let recipe3 = Recipe(value: dictionary3) try! realm.write { realm.deleteAll() //既に保存済のモデルを一旦削除 realm.add(recipe1)//レシピモデルの保存 realm.add(recipe2)//レシピモデルの保存 realm.add(recipe3)//レシピモデルの保存 //材料にたまねぎを使用するレシピモデルを取得する var objects: Results<Recipe> objects = realm.objects(Recipe.self).filter("SUBQUERY(ingredients, $ingredient, $ingredient.name = %@).@count >= 1","たまねぎ") print("objectsの中",objects) } } catch { print("エラー") }
出力結果
objectsの中 Results<0x10461f0e0> ( [0] Recipe { name = カツ丼; category = 丼; country = 日本; season = 夏; ingredients = List <0x280756760> ( [0] Ingredient { name = たまねぎ; }, [1] Ingredient { name = 卵; } ); }, [1] Recipe { name = カレー; category = カレー; country = 日本; season = 夏; ingredients = List <0x280756880> ( [0] Ingredient { name = たまねぎ; }, [1] Ingredient { name = にんじん; }, [2] Ingredient { name = じゃがいも; } ); } )
0 件のコメント:
コメントを投稿