Невозможно присвоить значение типа «Int» типу «Int? .Type» Swift 5 - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь передать значение из одного контроллера представления в другой тип Int.

Вот как я вызываю мою суге:

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 голосов
/ 20 апреля 2020

Необязательным в 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 Do c: https://developer.apple.com/documentation/swift/optional

Основы Swift: https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html# // apple_ref / DOC / UID / TP40014097-CH5-XID_399

0 голосов
/ 20 апреля 2020

Изменение var finalScore = Int? на var finalScore:Int = 0 исправлено! Не уверен, что это проблема с версией Swift, было бы полезно, если бы кто-нибудь смог подтвердить, почему это работает.

...