class ViewController: UIViewController {
let fortuneArray = ["You will find true love in the summer.", "Outlook not good", "You may find great success in business soon.", "Watch out for grey cats."]
let randomIndex = Int(arc4random_uniform(fortuneArray.count))
override func viewDidLoad() {
super.viewDidLoad()
let randomIndex = Int(arc4random_uniform(UInt32(fortuneArray.count)))
print("random index: ")
print(randomIndex)
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// actions
@IBAction func cookiePressed(sender: AnyObject) {
fortune.text = fortuneArray[randomIndex]
}
Swiftで非常に単純な占いアプリを作成していますが、arc4random_uniform
で問題が発生し続けています。現在、アプリにランダムに文字列を描画させようとしています。しかし、次のようなエラーが発生します。
インスタンスメンバー「fortuneArray」はタイプ「ViewController」では使用できません
変数randomIndex
を宣言している行。私はしばらくの間グーグルを使用していますが、修正が見つかりません。うまくいけば、誰かが助けてくれるでしょう、ありがとう!
*更新*問題は解決しました!ありがとう。
貼り付けたコードがviewDidLoad
のようなメソッドで定義されていない場合、クラスレベルで定義された変数を、クラスレベルで定義された別の変数に使用することはできません。これらの変数は実行時に決定され、決定される順序は不明であるため、randomIndexが作成される前にfortuneArrayが存在しない可能性があります(実際にはこのように機能しない可能性がありますが、少なくともこのように考えることができます)
これらの変数は、代わりにviewDidLoad
またはinit
またはその他の関数内で計算する必要があります
ああ、私はフォニックスの助けを借りてそれを理解しました。私はIBActionで乱数を宣言し、それがそれを処理しました。