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

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

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

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

Swift

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

Q&A

解決済

1回答

940閲覧

シミュレーターを変えるとエラーが発生する

hahum

総合スコア65

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/01/16 03:20

iPhone X で実行すると成功するのですが、ipadや違うiphoneで試すとエラーが発生してしまいます。@IBAction func save(_ sender: Any)のところで発生してしますのですが、iphoneX以外で発生している原因を教えていただきたいです。

swift

1 2 var resultArray1 = [String]() 3 4 var dateArray1 = [String]() 5 6 var Array1: [[String]] = [] 7 8 var date1 = Date() 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 13 //timerLabelのfont 14 timerLabel2.font = font1 15 //fractionsLabelのfont 16 fractionsLabel2.font = font2 17 //countLabelのfont 18 countLabel2.font = font3 19 20 let label = UILabel.init() 21 label.adjustsFontSizeToFitWidth = true 22 label.minimumScaleFactor = 0.3 23 24 let button = UIButton.init() 25 button.titleLabel?.adjustsFontSizeToFitWidth = true 26 button.titleLabel?.minimumScaleFactor = 0.3 27 28 let secondsString3 = secondsString2 > 9 ? "(secondsString2)" : "0(secondsString2)" 29 let minutesString3 = minutesString2 > 9 ? "(minutesString2)" : "0(minutesString2)" 30 let fractionsString3 = fractionsString2 > 9 ? "(fractionsString2)" : "0(fractionsString2)" 31 32 countLabel2.text = String(countLabelText) 33 timerLabel2.text = "(minutesString3):(secondsString3)" 34 fractionsLabel2.text = ".(fractionsString3)" 35 36 if fractionsString2 == 0 { 37 fractionsLabel2.text = ".00" 38 } 39 40 41 } 42 43 @IBAction func save(_ sender: Any) { 44 45 //配列を取り出す 46 if (UserDefaults.standard.object(forKey: "save") != nil) { 47 Array1 = UserDefaults.standard.object(forKey: "save") as! [[String]]**Thread 1: signal SIGABRT** 48 49 } 50 51 //Array1の要素0(resultArray1の保存したもの)をresultArray1に入れる 52 self.resultArray1 = self.Array1[0]**index out of range** 53 // Array1の要素1(dateArray1の保存したもの)をdateArray1に入れる 54 self.dateArray1 = self.Array1[1] 55 56 //zikanを呼び出す 57 zikan() 58 //resultArrayに回数を追加 59 resultArray1.append(countLabel2.text!) 60 61 Array1 = [resultArray1, dateArray1] 62 63 UserDefaults.standard.set(Array1, forKey: "save") 64 65 //print("Array1:", resultArray1.count) 66 67 68 } 69 70 71 func zikan() { 72 //日付のフォーマットを指定する 73 let format = DateFormatter() 74 format.dateFormat = DateFormatter.dateFormat(fromTemplate: "yMdkHm", options: 0, locale: Locale(identifier: "ja_JP")) 75 76 //日付をStringに変換する 77 let sDate = format.string(from: date1) 78 //日付をdateArrayに入れる 79 dateArray1.append(sDate) 80 } 81 82 83 84 85 /* 86 // MARK: - Navigation 87 88 // In a storyboard-based application, you will often want to do a little preparation before navigation 89 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 90 // Get the new view controller using segue.destination. 91 // Pass the selected object to the new view controller. 92 } 93 */ 94 95} 96

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

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

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

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

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

fuzzball

2019/01/16 03:52

エラーの内容を書いて下さい。
hahum

2019/01/16 03:54

Thread 1: signal SIGABRT またはindex out of rangeです。 シミュレーターを変えるとどちらかが出ます。
fuzzball

2019/01/16 04:07

エラーが出ている行を正確に書いて下さい。
hahum

2019/01/16 04:08

Array1 = UserDefaults.standard.object(forKey: "save") as! [[String]]**Thread 1: signal SIGABRT** } //Array1の要素0(resultArray1の保存したもの)をresultArray1に入れる self.resultArray1 = self.Array1[0]**index out of range**
fuzzball

2019/01/16 04:10

あー、ソース内に書かれていますね。 もう少し目立つように書くか、該当部分を抜粋して欲しいです。 ソース内への埋め込みだけだと把握しづらいです。
guest

回答1

0

ベストアンサー

初回起動時(Array1がカラのとき)の動作が考慮されていないので考慮して下さい。

swift

1var Array1: [[String]] = [[], []]

投稿2019/01/16 04:11

編集2019/01/16 05:44
fuzzball

総合スコア16731

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

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

hahum

2019/01/16 04:15

試してみましたが self.resultArray1 = self.Array1[0] Thread 1: Fatal error: Index out of range で止まってしまいます。
fuzzball

2019/01/16 04:22

回答を修正しました。
hahum

2019/01/16 04:29

誠に申し訳ございません。具体的にはどのようなことをすれば良いか教えていただけないでしょうか。例などでもいいので教えていただきたいです。
fuzzball

2019/01/16 04:32

それすらわからないのならもうやめたほうがいい。
hahum

2019/01/16 04:44

もう少しわかりやすく言い換えていただけないでしょうか
fuzzball

2019/01/16 04:47

ひらがなもよめないのでしょうか?
hahum

2019/01/16 05:01

私が聞きたいのは具体的にどのようなコードを書けば良いのか聞いています。本当にわかっているのであれば誰にでもわかりやすく教えていただきたいものです。調べて出てくるのであれば調べていますし現在もその途中です。本当にわからないので聞いているのです。 ひらがなは読めますしその言い方は差別的です。私にはいいですが、他の人には決してしないで頂きたい。
fuzzball

2019/01/16 05:08

「それすらわからないのならもうやめたほうがいい」に対して 「もう少しわかりやすく言い換えていただけないでしょうか」というコメントが付いたら 「ひらがなもよめないのでしょうか?」になるでしょう。 どこが差別なんでしょうか。
fuzzball

2019/01/16 05:11

という話は置いておいて、何が分からないんでしょうか? 「初回起動時の動作が考慮されていない」ことすら分からないのか、 「それは分かったけど、どう考慮したらいいのか分からない」のか。 それとも「考慮」の単語の意味が分からないのか。
hahum

2019/01/16 05:13

どう考慮したら良いのかがわかりません。
fuzzball

2019/01/16 05:16 編集

では「初回起動時の動作が考慮されていない」を具体的に書いて下さい。(どう考慮されていないのか)
hahum

2019/01/16 05:22

Array1に何も入っていない時のコードが書かれていないとうことでしょうか。
fuzzball

2019/01/16 05:54 編集

そうです。
hahum

2019/01/16 05:36 編集

saveボタンを押した時が初期起動時だと思っていたのですが、そうではなかったみたいですね。 とにかくボタンを押したときに正常に動作するようにしたいです。 viewdidloadで何か代入しておけば動くようになるのでしょうか。
fuzzball

2019/01/16 05:37

「saveボタンを押した時が初期起動時」ってもう日本語じゃないんですけどね。 プログラムの前に日本語勉強して下さい。
fuzzball

2019/01/16 05:44

回答に追記しました。これでどうでしょうか?
hahum

2019/01/16 05:52

うまくいきました。貴重なお時間を割いてご回答いただき感謝しております。 ありがとうございました。
fuzzball

2019/01/16 05:56

回答の意味(なぜこれで正常に動作するのか)は理解したのでしょうか?
hahum

2019/01/16 06:05 編集

Array1を宣言するときに、resultArray1とdateArray1の箱を用意していなくてはならなかったんですね。 だから初期動作時にインデックス番号で引っかかってしまったということでしょうか。
fuzzball

2019/01/16 06:23

原因は Array1[0] と Array1[1] が存在しないこと。 解決方法としては、 (a) あらかじめ用意しておく(私の回答) (b) Array1[0] と Array1[1] へのアクセスをスキップする などが考えられます。
hahum

2019/01/16 07:54

詳しく教えていただき本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問