首页 文章

Swift viewcontroller声明返回nil

提问于
浏览
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.")

    }

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

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

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

我想通过继续该过程的旁路是检查(cmd click)它在控制台我的print语句中重现的saveNewItem常量,这给出了它创建一个对象的印象 .

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

2 回答

  • 0

    找到了一种没有错误的工作方式 . 创建类对象saveNewItem后必须调用这些属性 . 我忽略了SaveLookItems类具有以下属性:

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

    这需要一个非零的初始值,否则我得到致命的错误:意外地发现零 .

    所以它现在适用于:

    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.")
    
    }
    
  • 0

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

    它返回零吗?

相关问题