无法将类型'Int'的值分配给类型'Int?.Type'Swift 5

时间:2020-04-20 04:52:45

标签: ios swift swift5

我正在尝试将值从一个视图控制器传递给另一类型为Int的视图控制器。

这是我调用我的sugue的方式:

if questionNumber + 1 == quizBrain.quiz.count{
            self.performSegue(withIdentifier: "goToScore", sender: self)
        }

我的prepare函数是:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "goToScore" {
    let destinationVC = segue.destination as! ResultViewController
    destinationVC.finalScore = quizBrain.getScore()
        }
    }

这是我的目标视图类:

import UIKit

class ResultViewController: UIViewController {

    var finalScore =  Int?

    override func viewDidLoad() {
        super.viewDidLoad()

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

quizBrain.getScore()获取类型Int的值。我正在尝试传递此值并在var finalScore的其他视图中捕获它。

我得到的错误是:

Cannot assign value of type 'Int' to type 'Int?.Type'

我不确定这到底意味着什么,我是Swift的新手,无法找到类型为Int?.Type的类似内容。如果我尝试在其他项目中传递String,也会遇到类似的问题。

2 个答案:

答案 0 :(得分:0)

var finalScore = Int?更改为var finalScore:Int = 0可以解决此问题!不知道这是否是Swift版本的问题,如果有人可以确认为什么这样会有用。

答案 1 :(得分:0)

Swift中的一个可选类型是可以保存值或不保存值的类型。可选项通过附加?来编写。到任何类型:

您应该定义一个可选的整数,例如:

var finalScore: Int? //now the value of finalScore can be nil or any integer value etc.

使用选项值时,有两种方法:

if finalScore != nil {
    print(finalScore!)
}

guard let score = finalScore else {
    return
}

print(score)

print(finalScore ?? 0)

有关更多信息,请参阅Apple Doc:https://developer.apple.com/documentation/swift/optional

快速基础:https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_399