Значение необязательного типа 'Float?'не развернутый;ты хотел использовать '!'или же '?'? - PullRequest
0 голосов
/ 23 мая 2018

Я определяю класс в Swift следующим образом:

var moduleName : String?
var moduleWeight : Float = 0
var moduleMark : Double = 0.0
var moduleCompletion : Int = 0
var moduleNotes : String?

У меня есть другая функция, которая обращается к этим переменным

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    //

    if segue.identifier == "courseWorkTopView"
    {
        if let topViewController = segue.destination as? assignmentTopViewController{
            topViewController.moduleName = detailItem?.moduleName
            topViewController.moduleWeight = detailItem?.value
        }
    }
}

Я получаю ошибку:

Значение необязательного типа 'Float?'не развернутый;ты хотел использовать '!'или '?'?

Я также попробовал следующий код

topViewController.moduleWeight = (detailItem?.value)!

Но я получаю ошибку времени выполнения:

Поток 1:EXC_BAD_INSTRUCTION (код = EXC_I386_INVOP, субкод = 0x0)

Я новичок в swift, и будет здорово, если кто-то сможет помочь решить эту проблему

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

detailItem ноль.Если вы хотите избежать сбоя, вы можете использовать

topViewController.moduleWeight = detailItem?.value ?? 0

(или использовать любое другое разумное значение по умолчанию) или

 if let topViewController = segue.destination as? assignmentTopViewController, let detail = detailItem {
    topViewController.moduleName = detail.moduleName
    topViewController.moduleWeight = detail.value
 }
0 голосов
/ 23 мая 2018

Вы можете решить таким образом

topViewController.moduleWeight = detailItem?.value ?? 0

или изменить moduleWeight как optional

var moduleWeight : Float?

и использовать его как обычно

topViewController.moduleWeight = detailItem?.value
...