Я пытаюсь создать некоторый код в Swift, который будет вводить пользовательский объект, из объекта UITextField, создать диапазон от этого ввода от 1 до X (введенный пользователем номер) а затем выберите случайное число из этого диапазона.Ошибка выполнения при вводе пользователя для диапазона
Я звоню мой пользовательский введенный текст как этого
var rangeInput: UInt32 {
get {
return ((rangeInputTextField?.text ?? "") as? UInt32)! // ERROR OCCURS HERE
}
}
и создание моего списка и назвав номер таким образом.
let viewController = ViewController()
var x = ViewController().rangeInput
let y = (UInt32?(x))
var number = arc4random_uniform(y!)
//MARK: Class for random number
struct RandomNumber {
// numberRange to change the value for 1...X(user input)
//creates the list to be picked from. (pickRandom)
func numberRange(high: UInt32) ->Range<UInt32>{
if let high = UInt32?(0) {
print("Invalid number")
} else {
let high = UInt32(y!) + 1
}
let range = 1...high
return range
}
let pickRandom = number
}
и обратно в мой контроллер, я звоню внутри функции моей кнопки, как это.
@IBAction func rollButton(sender: UIButton) {
rolledNumber?.text = "\(RandomNumber().pickRandom)"
if let resignFirstResponder: Bool = resignFirstResponder() {
self.rangeInputTextField?.resignFirstResponder() //Closes keyboard
}
resignFirstResponder()
}
override func viewDidLoad() {
super.viewDidLoad()
}
Вот что меня смущает, мой код компилируется и работает, когда я получаю в симуляторе, кажется, все в порядке, я нажимаю мой текстовое поле, и мой номер колодки тянет, и я могу ввести свой номер, но когда я нажимаю кнопку «Ролл», которую я установил, он падает. он дает мне ошибку говоря «Тема 1: EXC_BAD_INSTRUCTION (код = EXC_I386_INVOP, субкодовый = 0x0)» и «Фатальная ошибка: неожиданно нашла ноль в то время как разворачивание необязательного значения» в CMD линиях
на этой линии
return ((rangeInputTextField?.text ?? "") as? UInt32)!
вы не можете бросить строку UInt32, он не дает вам нуля, но вы заставляете разворачивать и, конечно, крушить – Andrea
@ Аndrea хорошо, тогда весь мой код имеет недостаток, потому что я использовал UInt32 для выбора случайного числа .. есть способ, которым я могу принять пользовательский ввод как UInt32, кроме этого? – GabrielMSC
Правильный путь будет создавать UInt32 от символа. Что-то вроде этого UInt32 (строка) – Andrea