実現したいこと
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}
あなたの回答
tips
プレビュー