Swift viewcontroller 声明返回 nil

Swift viewcontroller declaration returning nil

    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 的调用,来自调用它的主函数。

我很困惑为什么当打印语句声明它在声明中有一个值存储时这是 return nil。

我发现继续该过程的绕过方法是检查(cmd+单击)它在控制台中复制我的打印语句的 saveNewItem 常量,给人的印象是它创建了一个对象。

我还尝试使用这个问题中演示的故事板链接 viewcontroller: 如何在 Storyboard 中将 ViewController.swift 连接到 ViewController?

可能,您的 SaveNewItem() 方法 return 没有。 试试这个: 保存新项目? = 保存新项目() println(saveNewItem?)

return 没有吗?

找到了一种无错误运行的方法。在创建 class 对象 saveNewItem 后必须调用这些属性。我忽略了 SaveLookItems class 具有属性:

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

这需要有一个不是 nil 的初始值,否则我会得到致命错误:意外找到 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.")

}