やってみたらなんとかなる

プログラミングをする上で調べたこととかやったこととか

[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から変更

で修正できます。