[SwiftUI] Cannot assign to property: 'last' is a get-only property について
# 概要 今回はSwiftUIをいじっていた時に出てきた
Cannot assign to property: 'first' is a get-only property
というエラーについて分かったことと対応策です。
エラーが起きた状況
var a = [1, 2, 3, 4] a.last! = 3 // Cannot assign to property: 'first' is a get-only property
という配列の最後の要素をlastで取り出して変更しようとした時にエラーが起きました。
どういうやらこのエラー「'last'というpropertyはgetしかできません」という意味みたいです。
つまり、'last'というプロパティは値を取ってくるだけで、新しい値をセットすることはできないということみたいです。
そのため、「最後の要素を取ってきて」「新しい値をセットする」という二つの手順を踏みたい場合には'last'は使えないです。
解決策
この問題は単純に配列の要素をIndexで指定して取り出すことで解決できます。
var a = [1, 2, 3, 4] a[a.count - 1] = 3
'count'で配列の長さを取得して、-1で最後の要素を指定して値を取り出すという感じです。
まとめ
- 'last'は配列の最後の要素を取り出すことしかできない
- 取り出した要素を変更したい場合は直接Indexで指定する
- 'count-1'で最後の要素のIndexになる
補足
'first'でも同じエラーが起こるみたいです。この場合は
var a = [1, 2, 3, 4] a[0] = 3 // a.first! = 3から変更
で修正できます。