【Swift4】argument passed to call that takes no arguments の解決策
今日、Swiftでじゃんけんアプリを作っていた時に、この「argument passed to call that takes no arguments」というエラーが出たのでエラーが出た状況と解決策をまとめていこうと思う。
argument passed to call that takes no arguments
◇ 目次 ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
1. 実現しようとした事
2. Argument Passed to call that takes no argumentsとはどんなエラー?
3. 解決策
4. まとめ
2. Argument Passed to call that takes no argumentsとはどんなエラー?
3. 解決策
4. まとめ
1. 実現しようとした事
[図] myJankenViewControllerで発生したエラーの詳細 |
import UIKit
! Argument passed to call that takes no arguments
(以下省略)
}
}
「グー」「チョキ」「パー」の3種類の出目をCPUが出してくれる、そんなじゃんけんアプリを作っていたのだが、
相手のCPUの出目をarc4random関数で指定してあげようと思ったところ、このようなエラーが出てしまった。
2. Argument Passed to call that takes no arguments とはどんなエラー?
つまり、自分自身の解釈だとclass直下に書く変数(今回はselectedNumber)は、viewDidLoad()や@IBAction func関数などで、呼び出される事がほとんどだと思う。
そんな変数を定義する時なおかつarc4randomを使うのであれば、右辺に渡す値に引数が含むものを入れてはいけないという事だと思われる。
ここで一番最初に掲載した図をよく見てみると、
[図] myJankenViewControllerで発生したエラーの詳細 |
arc4random(数字)関数は、()内で引数を取っているので、Xcode的にはその書き方は控えてね、という事だと思われる。
3. 解決策
試行錯誤の上、これでうまくいった...!
import UIKit
}
特定の乱数を指定した処理<if分岐など...>を使いたい時は、arc4randomではなく、arc4random_uniformを使ってくださいとのことだ。
4. まとめ
乱数を生成する関数には色々な種類があり、それを正しく使い分けられるようにならないといけないみたいだ。それらの違いについてまとめた記事をまたいつか投稿できたらいいなと思う。
余談だが、arc4random_uniformを使用した際に、
[図] arc4random_uniformで発生するエラー |
Missing arguments for parameter #1 in call
というエラーが発生する事がある。
その時は、arc4random_uniform()の引数が抜けているため発生するエラーなので、数字を入れてやれば良い。
import UIKit
class myJankenViewController: UIViewController {
var selectedNumber: Int(arc4random_uniform())
//uniform(数字)←ここの数字が抜けていると、そのエラーが発生する。
//uniform(数字)←ここの数字が抜けていると、そのエラーが発生する。
}
コメント
コメントを投稿