Невозможно преобразовать значение типа Int в ожидаемый тип аргумента UInt32.
Любые идеи о том, что я могу сделать, чтобы исправить эту ошибку, я пытаюсь получить десять случайных чисел, чтобы я мог запросить 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) {
}
3 ответа
Сделай свой amountOfQuestions
переменная UInt32
а не Int
выводится компилятором.
var amountOfQuestions: UInt32 = 2
// ...
var randomNumber = Int(arc4random_uniform(amountOfQuestions - 1)) + 1
arc4random_uniform
требует UInt32
,
arc4random_uniform(u_int32_t upper_bound);
Объявите amountOfQuestions как UInt32:
var amountOfQuestions: UInt32 = 2
PS: Если вы хотите быть грамматически правильным, это количество вопросов.
Первое: метод "arc4random_uniform" ожидает аргумент типа UInt32, поэтому, когда вы помещаете туда это вычитание, он преобразует написанное вами "1" в UInt32.
Второе: в swift вы не можете вычесть UInt32 ("1" в вашей формуле) из Int (в данном случае "amountOfQuestions").
Чтобы решить все это, вам нужно рассмотреть вопрос об изменении объявления 'amountOfQuestions' на:
var amountOfQuestions = UInt32(2)
Это должно делать свое дело:)