0
    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 声明中,这是对另一个视图控制器的调用:来自主视图控制器的 SaveNewItem 调用它。

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

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

我还尝试使用故事板链接视图控制器,如以下问题所示: How to connect ViewController.swift to ViewController in Storyboard?

4

2 回答 2

0

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

它返回零吗?

于 2017-06-14T13:09:09.123 回答
0

找到了一种可以正常工作的方法。这些属性必须在创建类对象 saveNewItem 后调用。我忽略了 SaveLookItems 类具有属性:

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.")

}
于 2017-06-14T23:02:41.753 回答