🪵

SwiftData の Delete Rule 確認用アプリを作りました

に公開

SwiftDataのDelete Ruleを確認するために作りました。

https://github.com/samekard-dev/DeleteRule

画面

使い方 アプリ使用者目線

接続が画面上部に図で書かれています。
消したい要素の消去ボタンをタップしてください。
無事消えたり、エラーになって実行が止まったりします。
接続の表示/非表示を切り替えることによってエラーのタイミングを調べられます。

使い方 コード編集目線

使い方は少し面倒なのですが

  • 接続のパターン 1:1 1:多 多:多
  • Delete Rule .cascade など

を直接ソースの中に書き込んでください。

接続のパターンを書く場所

ContentView.swift の頭

typealias ModelL = ModelOneOneUnidirL
typealias ModelR = ModelOneOneUnidirR

Delete Rule を書く場所

それぞれのクラスの接続先を宣言しているところ

@Relationship(deleteRule: .cascade) var r: ModelOneOneUnidirR?

「接続を表示/隠す」について

消えている接続先にアクセスするとエラーが起きる。
接続先を常に表示している場合、消した瞬間にエラーになる。しかし、実際はアクセスしたときにエラーが出るので

  • 消す
  • アクセスする

の時間をずらして行うと原因がわかりやすい。
接続の表示/非表示が切り替えられるようにする。

.denyについて

.deny はどういう使い方をするかいまいちわかっていない。

意見募集

意見などはコメント欄にお願いします。

Discussion