我正在尝试将值从一个视图控制器传递给另一类型为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
,也会遇到类似的问题。
答案 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