Swift viewcontroller声明返回nil

时间:2017-06-14 12:56:15

标签: swift declaration viewcontroller forced-unwrapping optional-values

    let saveNewItem = SaveNewItem()

    print(saveNewItem)

    if saveNewItem != nil {
        print("Contains a value!")
        _ = UIApplication.shared.keyWindow!.rootViewController
        self.present(saveNewItem, animated: true, completion: nil)
    } else {
         print("Doesn’t contain a value.")

    }

我收到了臭名昭着的致命错误:在打开一个可选值时意外地发现了nil

在我的saveNewItem声明中,这是对另一个viewcontroller的调用:来自调用它的主要的SaveNewItem。

我很困惑,当print语句声明它在声明中有值存储时,为什么返回nil。

绕过我想要继续进行的过程是检查(cmd + click)它在控制台我的print语句中重现的saveNewItem常量,这给出了它创建一个对象的印象。

我还尝试使用故事板链接viewcontroller,如下所示: How to connect ViewController.swift to ViewController in Storyboard?

2 个答案:

答案 0 :(得分:0)

可能,你的SaveNewItem()方法返回nil。 试试这个: saveNewItem? = SaveNewItem() 的println(saveNewItem?)

它会返回nil吗?

答案 1 :(得分:0)

找到一种方法让它无错误地工作。创建类对象saveNewItem后必须调用这些属性。我忽略了SaveLookItems类具有属性:

var itemImage     : UIImage!
var imageOrigin   : NSString!
var itemType      : NSString! 

要求初始值不是nil否则我会得到致命错误:意外地发现没有。

所以它现在适用于:

let saveNewItem = SaveNewItem()

print(saveNewItem)

if saveNewItem != nil {
    print("Contains a value!")
        saveNewItem.itemImage = image
        saveNewItem.itemType = "topItem"
        saveNewItem.imageOrigin = "Camera"
    _ = UIApplication.shared.keyWindow!.rootViewController
    self.present(saveNewItem, animated: true, completion: nil)
} else {
     print("Doesn’t contain a value.")

}