blitz-time アプリ開発ブログ

Androidアプリ開発などのTips集

【SwiftUI開発】Cannot assign to property: 'self' is immutable

「Cannot assign to property: 'self' is immutable」がたまに出てきます。

「immutable」は「不変」という意味です。変更できないプロパティです。という意味ですね。
なので、変更できるようにしてあげましょう。

「@State」をつけてあげてください!

なぜ「immutable(=不変)」と言われるかというと、上記の「isEditing」は「struct ContentView」の「プロパティ」になるのですが、そもそも「struct(=構造体)」のプロパティは「不変」なのです。そういう仕様です。
その仕様を無視させるのが「@State」になります。


「struct」とは異なり、「class」の場合はプロパティは変更可能の仕様になるので、「@State」は不要です。

SwiftUIを利用していると、通常のViewはstructで扱われているため、更新が必要なプロパティには全て「@Stateを付ける!」と考えておけば良いです。

SwiftUIで開発したアプリをご紹介しておきます。
appdev.blitz-time.com