swift - 线程 1 : EXC_BAD_INSTRUCTIONS | SWIFT

标签 swift multithreading random

当我启动应用程序时,它运行正常。当我点击随机化按钮时,Thread 1: EXC_BAD_INSTRUCTIONS 出现在 finalLABEL.text = str 点。 fatal error :在展开可选值时意外发现 nil

@IBOutlet var fromACT: UITextField!
@IBOutlet var toEXT: UITextField!
@IBOutlet var finalLABEL: UILabel!
func unsafeRandomIntFrom(start: Int32, to end: Int32) -> Int32 {
    let number =  Int32(arc4random_uniform(UInt32(end - start + 1))) + start
    return number
}

@IBAction func random(sender: AnyObject) {
    let convertedNumber = NSString(string: fromACT.text!).intValue
    let convertedNumber2 = NSString(string: toEXT.text!).intValue
    let randomSV = unsafeRandomIntFrom(convertedNumber, to: convertedNumber2)
    let str = String(randomSV)

    finalLABEL.text? = str
}

最佳答案

尝试保护您的代码:

...
let convertedNumber = NSString(string: fromACT.text!).intValue
let convertedNumber2 = NSString(string: toEXT.text!).intValue
let randomSV = unsafeRandomIntFrom(convertedNumber, to: convertedNumber2)
if Int(randomSV) != nil {
    let str = String(randomSV)
    finalLABEL.text? = str
}

您还可以为您的函数设置默认值:

func unsafeRandomIntFrom(start: Int32 = 3, to end: Int32 = 6) -> Int32 {
    let number =  Int32(arc4random_uniform(UInt32(end - start + 1))) + start
    return number
}

确保无论何时您想调用不带值的函数,都具有默认值。

关于swift - 线程 1 : EXC_BAD_INSTRUCTIONS | SWIFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38220984/

相关文章:

ios - 使用 Swift 4 在 WatchOS 中创建一个简单的计时器

ios - 如何在 Swift 协议(protocol)中声明可选方法?

C - 使用互斥锁同步多个线程

multithreading - 如果将互斥量放在条件变量之前,那么有多少个线程如何在条件变量上等待呢?

c# - 后台工作人员不断运行问题 c#

xml - SOAP 用户界面 : is it possible to autogenerate the value from an element in a SOAP message?

python - 从 N 个平均值和 N 个西格玛的列表中生成 N 个样本的数组

swift - UnsafeMutablePointer<UInt8> 到 [UInt8] 没有内存复制

ios - 体系结构的 undefined symbol x86_64 : "_OBJC_CLASS_$_UIPointerShape", "_OBJC_CLASS_$_UIPointerStyle"

javascript - 获取随机的 n 个元素数组并将它们插入到指定元素中