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

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

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

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

Q&A

解決済

3回答

3143閲覧

Command failed due to signal: Segmentation fault: 11の解除の方法

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

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

0グッド

0クリップ

投稿2017/04/13 13:26

###前提・実現したいこと

只今swiftで割り勘アプリを作成しています。
goukeikingakuと、ninzuuのtextFieldが空の場合、
アラートを出そうとしています。
その際に発生してしまった、エラーを解除したいです。
###発生している問題・エラーメッセージ

下記の補足情報のURLを参考にして、コードを記述し、 ビルドしていたところ、”Command failed due to signal: Segmentation fault: 11”というエラーメッセージが発生しました。

###該当のソースコード

import UIKit class ViewController: UIViewController , UITextFieldDelegate { //合計金額を入力するフォーム @IBOutlet weak var goukeikingaku: UITextField! @IBOutlet weak var ninzuu: UITextField! @IBOutlet weak var result: UILabel! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //delegateの所在を書く goukeikingaku.delegate = self ninzuu.delegate = self //数字のみを記載できるように指定 ninzuu.keyboardType = .numberPad goukeikingaku.keyboardType = .numberPad } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func resultButton(_ sender: Any) { if (goukeikingaku.text ?? "").isEmpty || (ninzuu.text ?? "").isEmpty { //UIAlertControllerインスタンスの作成 let alertController = UIAlertController(title: "エラー", message: "合計金額又は、人数が未入力です。", preferredStyle: .alert) //追加するアクションの設定 let ryoukaiAction = UIAlertAction(title: "了解", style: .default, handler: nil) //設定したアラートアクションをUIAlertControllerに追加する alertController.addAction(ryoukaiAction) //アラートを表示 present(alertController, animated: true, completion: nil) } else { guard let goukeikingakutext = goukeikingaku?.text, let goukeikingaku = Int(goukeikingakutext) else { return } guard let ninzuutext = ninzuu?.text, let ninzuu = Int(ninzuutext) else{ return } } // 入力値を取得 let intNinzuu = Int(ninzuu.text!)! let intGoukeikingaku = Int(goukeikingaku.text!)! // 総金額/人数 = 一人あたり let intResult = intGoukeikingaku / intNinzuu //ラベルに結果を表示 result.text = "\(intResult)円" // キーボードを閉じる view.endEditing(true) } }

###試したこと
Yahoo!で検索して見ましたが、初心者ということもあり、
どうしてもわかりませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
参考URL
https://teratail.com/questions/71431

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

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

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

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

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

guest

回答3

0

アラートを表示してreturnすれば問題ないです。

swift

1//アラートを表示 2present(alertController, animated: true, completion: nil) 3 4return

投稿2017/04/13 14:09

_Kentarou

総合スコア8490

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

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

退会済みユーザー

退会済みユーザー

2017/04/14 13:59

お早い回答ありがとうございます。 申し訳ございませんが、最初のコードの一行下にreturnを記載してみましたが、以前同じエラーが出てしまっています。
_Kentarou

2017/04/14 14:10

コンソールに出ているエラーは載せているエラーだけでしょうか? あとコードは載せているもので全てでしょうか?
退会済みユーザー

退会済みユーザー

2017/04/15 12:27

返信遅れて申し訳ないです。 コードは載せているもので全てです。 エラー自体も、このエラーのみ・・・の、はずです。
_Kentarou

2017/04/15 13:13

そもそもですが、Buildすらできていないと言うことでしょうか? @IBActionの中を全て消しても同じ現象がおきますか?
退会済みユーザー

退会済みユーザー

2017/04/15 14:05

ビルドすらできていない状態でした。 @IBActionの中を消す(//入力値を取得の上まで)と、ビルドができていました。 最終的には、参考URLの写経ミス(”guard let pricetext〜&guard let numbertext~"の所)と、return以降の"}"の数を適正?にした所、治りました。回答ありがとうございました。
guest

0

ベストアンサー

回答していただいた方ありがとうございます、
下記コードに書き換えたら、できるようになりました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
guard let pricetext = goukeikingaku?.text, let price = Int(pricetext) else{
return
}
guard let numbertext = ninzuu?.text, let number = Int(numbertext) else{
return
}

// 入力値を取得 let intNinzuu = Int(ninzuu.text!)! let intGoukeikingaku = Int(goukeikingaku.text!)! // 総金額/人数 = 一人あたり let intResult = intGoukeikingaku / intNinzuu //ラベルに結果を表示 result.text = "\(intResult)円" // キーボードを閉じる view.endEditing(true)

}
}
}

投稿2017/04/15 13:47

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

「入力値を取得」以降の処理は、elseの中に書かないとダメじゃないですか?

投稿2017/04/13 22:24

fuzzball

総合スコア16731

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

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

退会済みユーザー

退会済みユーザー

2017/04/14 14:03

回答ありがとうございます。 色々試して見ましたが、エラーが解消されません。 申し訳ございませんが、問題の所の解決できる詳細なコードがあればいただけると助かります・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問