質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

695閲覧

Realm における1対多における特定の対象データのクエリーについて

tpw

総合スコア4

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/12/18 12:44

編集2021/12/18 12:54

実現したいこと

Realmを使用して、
・タスク一覧(筋トレ、10回/日)
・タスクに対する実績(X月X日、5回)
を記録し、
X月X日に、どのタスクをどれだけ実施したかを検索できるアプリの作成

発生している問題

下記の「ソースコード」に記載のソースにて、対象情報を抽出しようと試しましたが、得たい結果が得れませんでした。
お忙しいところ恐れ入りますが、どなたか、ご教示いただけると幸いです。

得たい結果
(特定タスクのさらに特定の日付のデータ)

Task { TaskName = 勉強; TaskTarget = 10; Actuals = List<Actual> <0x6000028e0580> ( [0] Actual { ActualDate = 5月; ActualFigure = 20; }

試してみた結果(うまくいかず、下記「ソースコード」で試行錯誤した結果)
<today detail の結果>

Results<Task> <0x141e15c40> (
[0] Task {
TaskName = 勉強;
TaskTarget = 10;
Actuals = List<Actual> <0x6000028e0580> (
[0] Actual {
ActualDate = 5月;
ActualFigure = 20;
},
[1] Actual {
ActualDate = 6月;
ActualFigure = 20;
});},
[1] Task {
TaskName = 筋トレ;
TaskTarget = 20;
Actuals = List<Actual> <0x6000028e06e0> (
[0] Actual {
ActualDate = 5月;
ActualFigure = 20;
})})

<today test の結果>

Optional(Actual {
ActualDate = 5月;
ActualFigure = 20;
})

ソースコード

swift

1import Foundation 2import RealmSwift 3 4class Task: Object { 5 @objc dynamic var TaskName = "" 6 @objc dynamic var TaskTarget = 0 7 let Actuals = List<Actual>() 8} 9 10class Actual: Object { 11 @objc dynamic var ActualDate = "" 12 @objc dynamic var ActualFigure = 0 13}

swift

1import UIKit 2import RealmSwift 3 4class ViewController: UIViewController { 5 let realm = try! Realm() 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 //インスタンス 11 let item = Task() 12 //親データ登録 13 item.TaskName = "筋トレ" 14 item.TaskTarget = 20 15 try! realm.write { 16 realm.add(item) 17 } 18 19 //子データの登録 20 let task = realm.objects(Task.self).filter("TaskName == '筋トレ'").first 21 let actual = Actual() 22 actual.ActualDate = "5月" 23 actual.ActualFigure = 20 24 try! realm.write { 25 task?.Actuals.append(actual) 26 } 27 28 let todayDetail = realm.objects(Task.self).filter("ANY Actuals.ActualDate == '5月'") 29 let todaytest = realm.objects(Actual.self).filter("ActualDate == '5月'").first 30 print(todayDetail) 31 print(todaytest) 32 } 33}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問