web-dev-qa-db-ja.com

タイプ「Int」の値を期待される引数タイプ「UInt32」に変換できません

このエラーを修正するために何ができるかについてのアイデアはありますが、10個の乱数を取得しようとしているので、乱数を含む一連の質問についてFirebaseにクエリを実行できます。下のスクリーンショット。コードも追加しました...

import UIKit
import Firebase

class QuestionViewController: UIViewController {

var amountOfQuestions = 2

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)

    //Use a for loop to get 10 questions
    for _ in 1...10{
        //generate a random number between 1 and the amount of questions you have
        var randomNumber = Int(arc4random_uniform(amountOfQuestions - 1)) + 1

        //The reference to your questions in firebase (this is an example from firebase itself)
        let ref = Firebase(url: "https://dinosaur-facts.firebaseio.com/dinosaurs")
        //Order the questions on their value and get the one that has the random value
        ref.queryOrderedByChild("value").queryEqualToValue(randomNumber)
            .observeEventType(.ChildAdded, withBlock: {
                snapshot in
                //Do something with the question
                println(snapshot.key)
            })
    }    }



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func truepressed(sender: AnyObject) {
}

@IBAction func falsePressed(sender: AnyObject) {
}

enter image description here

5
Tom Fox

コンパイラによって推測されるamountOfQuestionsではなく、Int変数をUInt32にします。

var amountOfQuestions: UInt32 = 2

// ...

var randomNumber = Int(arc4random_uniform(amountOfQuestions - 1)) + 1

arc4random_uniformにはUInt32が必要です。

Darwin docs から:

arc4random_uniform(u_int32_t upper_bound);
4
JAL

AmountOfQuestionsをUInt32として宣言します。

var amountOfQuestions: UInt32 = 2

PS:文法的に正しくしたいのなら、それはnumberの質問です。

6
yesthisisjoe

まず、メソッド「arc4random_uniform」はUInt32型の引数を想定しているため、その減算をそこに入れると、書き込んだ「1」がUInt32に変換されます。

2番目のこと:In Swift Int(この場合は 'amountOfQuestions')からUInt32(数式の「1」)を引くことはできません。

すべてを解決するには、「amountOfQuestions」の宣言を次のように変更することを検討する必要があります。

var amountOfQuestions = UInt32(2)

それはトリックを行う必要があります:)

3
gaskbr