作为String转换为Int失败

时间:2016-03-22 15:31:44

标签: ios swift uitableview casting

我的prepareForSegue电话遇到了一些问题。每当我尝试segue到下一个视图控制器。它会在我将tripLikes传递给下一个视图控制器时出现错误并崩溃。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "toDetailScene") {


        //Hooking up places-holder values
        let viewController = segue.destinationViewController as! DetailViewController

        let cell = sender as! CustomPFTableViewCell


        viewController.tripName = cell.nameTextLabel.text!
        viewController.tripAuthor = cell.authorTextLabel.text!
        viewController.tripLikes = Int(cell.numLikes.text!)!
        viewController.tripDescrip = cell.descriptionHolder

    }
}

我们传递给的每个值都是目标视图控制器中的值。

1 个答案:

答案 0 :(得分:5)

您正在使用Int(cell.numLikes.text!)!进行大量强制解包。如果其中任何一个值为nil,则程序将崩溃。

为什么不尝试更安全的东西,例如if-let流程:

if let text = cell.numLikes.text {
    if let textInt = Int(text) {
        viewController.tripLikes = textInt
    } else { // Int cannot be constructed from input
        viewController.tripLikes = 0
    }
} else { // cell.numLikes.text was nil
    viewController.tripLikes = 0
}