👓SWIFTでCannot assign to property: 'self' is immutableとはどういう意味ですか?

Cannot assign to property: 'self' is immutable というエラーメッセージはSwiftで見られるもので、これはオブジェクトのプロパティや自身の値を変更しようとした際に、そのオブジェクトが不変(immutable)であることを示しています。具体的には、以下のような状況でこのエラーが発生することが一般的です:

  1. 構造体のインスタンスが定数として宣言されている場合: Swiftの構造体は値型であり、インスタンスが定数(let で宣言された)として作成された場合、そのプロパティは変更できません。

  2. 関数やメソッド内でのselfの不変性: 値型(例えば構造体)のメソッド内で、self 自体を変更しようとした場合にもこのエラーが発生します。これを回避するためには、メソッドを mutating として宣言する必要があります。

  3. このエラーは、Swiftの値型と参照型の基本的な特性に関連しています。値型のインスタンスは、不変性が保証されている場合にはその状態を変更することができません。これに対し、参照型(例えばクラス)の場合、定数としてインスタンスを宣言しても、そのプロパティを変更することが可能です。

SwiftUIのビューは構造体であるべきで、それはデフォルトで不変であることを意味します。これが私たち自身のコードであれば、値を変更することをSwiftに伝えるためにmutatingを使用してメソッドをマークすることができますが、SwiftUIでは計算されたプロパティを使用するため、それを行うことはできません。
プログラムの実行中にプロパティの値を変更したい場合は、次のように@Stateを使用してマークする必要があります:

https://www.hackingwithswift.com/quick-start/swiftui/how-to-fix-cannot-assign-to-property-self-is-immutable


いいなと思ったら応援しよう!

あたり帳簿
お願い致します