質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

173閲覧

swfit 配列をprintすると要素が更新されない

RTn

総合スコア4

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/05/03 13:26

編集2021/05/04 14:56

swfitでviewcontrollerから操作して配列の要素を変更しているのですが次のview、secoundviewcontrollerで同じ配列の違うindexに同じ操作をしてprintして配列に中身を確認しているのですが一番最初のviewcontrollerで変更したindexが変更前の要素でprintされてしまいます。

同じ配列に指定しているはずなのですが画像のデバック画面を確認していただければ質問の意味を理解していただけると思います。
これは1回目の処理が保存されていないという事なのでしょか?
なかなか調べても納得のいくものが見つからないためどうか皆様のご教授頂ければ幸いです。
イメージ説明

class

1class Typevalue { 2 3 var Analyzer = [0,0,0,0,0] 4 5}

viewController

1class ViewController: UIViewController { 2 3 4 var typesCount = Typevalue() 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 9 } 10 11 12 13 14 @IBAction func button(_ sender: Any) { 15 typesCount.Analyzer[0] = 1 16 print("1回目の処理") 17 print(typesCount.Analyzer) 18 19 } 20 21 @IBAction func button2(_ sender: Any) { 22 typesCount.Analyzer[0] = 2 23 print("1回目の処理") 24 print(typesCount.Analyzer) 25 26 } 27 28 @IBAction func button3(_ sender: Any) { 29 typesCount.Analyzer[0] = 3 30 print("1回目の処理") 31 print(typesCount.Analyzer) 32 33 } 34 35 @IBAction func button4(_ sender: Any) { 36 typesCount.Analyzer[0] = 4 37 print("1回目の処理") 38 print(typesCount.Analyzer) 39 40 } 41 42} 43

SecondViewontroller

1 2import UIKit 3 4class SecondViewController: UIViewController { 5 6 var value2 = Typevalue() 7 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 13 } 14 15 @IBAction func supporter1_1(_ sender: Any) { 16 value2.Analyzer[1] = 1 17 print("2回目の処理") 18 print(value2.Analyzer) 19 } 20 21 @IBAction func supporter1_2(_ sender: Any) { 22 value2.Analyzer[1] = 2 23 print("2回目の処理") 24 25 print(value2.Analyzer) 26 27 } 28 29 @IBAction func supporter1_3(_ sender: Any) { 30 value2.Analyzer[1] = 3 31 print("2回目の処理") 32 33 print(value2.Analyzer) 34 } 35 @IBAction func supporter1_4(_ sender: Any) { 36 value2.Analyzer[1] = 4 37 print("2回目の処理") 38 39 print(value2.Analyzer) 40 } 41 42} 43 44

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RTn

2021/05/04 14:58

ご指摘ありがとうございます。 修正致しましたのでどうか宜しくお願いします、またどこか不明瞭な点がございましたら、お手数おかけしますがまたご指摘頂けますと幸いです。
hoshi-takanori

2021/05/04 15:17

ViewController と SecondViewController がそれぞれ別々の Typevalue を持ってるんですね。 ViewController の button を押した後で SecondViewController の supporter1_1 を押せば、ViewController と SecondViewController が持つ配列は別々なので、次のようになります。 1回目の処理 [1, 0, 0, 0, 0] ← ViewController が持つ typesCount.Analyzer が表示される 2回目の処理 [0, 1, 0, 0, 0] ← SecondViewController が持つ value2.Analyzer が表示される
RTn

2021/05/08 18:29

ありがとうございます。ご指摘いただいた通り、別の変数で宣言していれば別の配列になるのは当然でした。 見直しが甘かったです。staticを使って書き直したら考えた通りに動きました。 理解しやすい説明をしてくださってありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問