前提・実現したいこと
初歩的な質問で大変恐縮です。
Xcode12を使ってiOSアプリを作ろうとしているのですが、
配列を初期化した後に、アプリ上でその中身を変更して保持したいです。
発生している問題・エラーメッセージ
例えば以下コードで指定した配列内の数字が書き変わりません。
(ビルドエラーにはなりません)
該当のソースコード
//
// ContentView.swift
// Practice
//
import SwiftUI
struct ContentView: View {
@State var array:[Int] = [1,2,3,4,5]
let num:Int = 1
var body: some View { VStack { Text("(array[num])") // オリジナル .padding() Text("(changeArray1())") // 値変更1ケース目 .padding() Text("(array[num])") // 変化なし(オリジナルのまま) .padding() Text("(changeArray2(array: &array)[num])") // 値変更2ケース目 .padding() Text("(array[num])") // 変化なし(オリジナルのまま) .padding() } .font(.title) } func changeArray1() -> Int { let calc:Int = 5 array[1] = calc return calc } func changeArray2(array:inout [Int]) -> [Int] { var newArray:[Int] = array newArray[num] = 10 return newArray }
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
試したこと
・配列を定数ではなく変数で宣言しました
・body内で値の代入はできないのでfunc内で書き換えることにしました
(ケース1)
・引数無しとしてfunc内で値の変更を試みましたが変わりませんでした
(ケース2)
・配列ごとfuncにinoutを使って配列ごとfuncに渡して値の変更を試みましたが変わりませんでした
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー