iOSアプリ制作をしております。
ある多次元配列をprintメソッドで出力した際に、①ログに出力される配列のプロパティと、②配列の変数にマウスオンした時のプロパティが異なっている。という事象が起きています(下記キャプチャ画像)
なぜ①と②のプロパティが異なって表示されるのでしょうか?
もし原因分かる方いらっしゃればアドバイスいただけると幸いです。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
なぜ①と②のプロパティが異なって表示されるのでしょうか?
の回答としてはizknさんのおっしゃるとおりなので補足程度に。
removeは指定したindexの要素を削除してtoDaysMealArray自身の値が変化させます。エラーになる前にremoveを2回行なっているのでエラーになった時点では元々4つあったtoDaysMealArrayの中身は2つになっています。カーソルを合わせて表示された2 valuesはこのことを指しています。
具体的には下記のように変化していってます。(selectedCellsPathは0のようなので)
①元々の配列
toDaysMealArray // [[34, 24], [19, 9], [49, 34], [320, 250]]
②一回目のremove後
toDaysMealArray.remove(at: [0][0]) // [[19, 9], [49, 34], [320, 250]]
③二回目のremove後(削除されている要素が2つ目の要素[49, 34]ということに注意)
toDaysMealArray.remove(at: [1][0]) // [[19, 9], [320, 250]]
④三回目のremove時、2つしかない要素の3個目を削除しようとしてエラー
toDaysMealArray.remove(at: [2][0]) // error
やりたかったことが具体的に何かはわかりませんが、要素を一個ずつ消したかったのであれば下記のようにすれば先頭から一個ずつされます(何をやりたいかで配列の要素の削除の仕方はもっと他にありますがとりあえず質問中にあったやり方でやるとすればの例です)。
toDaysMealArray.remove(at: [0][0]) toDaysMealArray.remove(at: [0][0]) toDaysMealArray.remove(at: [0][0]) toDaysMealArray.remove(at: [0][0])
投稿2017/07/01 10:01
総合スコア1585
0
ベストアンサー
1はprint("栄養配列は\(toDaysMealArray)")
が実行された時の状態
2は以下が発生した時の状態
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
その状態で、どの行のtoDaysMealArray
をマウスオンしようと、EXC_BAD_INSTRUCTION
発生時の値しか見れません。
その時々の値を参照したいなら、ブレークポイントを設定してください。
行番号の箇所をクリックすると、その行にプレークポイントが設定できます。
デバッガの使い方は、以下を参考にしてください。
投稿2017/07/01 01:44
総合スコア1698
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
配列の配列ですよね
②で表示されるポップアップ内の[0]
などの左の三角をクリックすれば中身が表示されると思いますが...
投稿2017/07/01 02:50
編集2017/07/01 10:56総合スコア3384
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/02 02:57