Swift CoreData 小テーブルオブジェクト生成

Swift CoreData 小テーブル作成の記事がほとんどなかったので記載

テーブル関係はこう

PlansがDaysを1対多でもっている

f:id:happy_teeth_ago:20190517135227p:plain

ポイントは days_re が一つの変数のように扱うところ。

NSSet にNSMutableArray はセットできない。CoreDataがObjective-Cで書かれているので仕方がない。

よってこれしかやりようがない。

//ボタン押下で子テーブルを入力値分作成
 @IBAction func btn_registration(_ sender: Any) {
        
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let context = appDelegate.persistentContainer.viewContext
        
        let plan = Plans(context: context)

        //小テーブルを入力値分 作る
        let num:Int! = Int(planDays!.text!)

        for _ in 0...num{
//小テーブルのインスタンスをcoredataで作成し
            let day = Days(context: context)
//親planテーブルに追加する。
           plan.days_re = plan.days_re?.adding(day) as NSSet?
        }
       
        
        plan.name = planName.text
        //開始日付を取得して保存
        let date = Date()
        plan.start_date = date
        do {
            try context.save()
        }catch{
            print(error)
        }

        //画面遷移
        dismiss(animated: true, completion: nil)
    }