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

    } 

我收到了臭名昭著的:致命错误:意外发现零,而在我的saveNewItem声明,这是一个不同的视图 - 控制通话展开一个可选值斯威夫特的ViewController声明返回nil

:从主SaveNewItem一个这样称呼。

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

旁路我想通过检查(cmd + click)saveNewItem常量,它在控制台中重现了我的打印语句,这给出了它创建对象的印象。

我也尝试使用链接作为demonstated在这个问题上的故事板视图 - 控制: How to connect ViewController.swift to ViewController in Storyboard?

+0

你确定它不是keyWindow具有'nil'值:

所以它现在的工作?这是你强制解开的唯一价值,所以如果不是这条线,我应该感到惊讶。 –

+0

'SaveNewItem'是一个UIViewController,对吧?但它是否出现在Xib或Storyboard中?如果是,它可能有一些'IBOultet'。然后,通过执行'let saveNewItem = SaveNewItem()'''''''''''''''''''''''''''''''''''''''''不是从XIB或Storyboard中调用的,因此所有这些元素都没有链接,并且发现你的“意外地发现了零,同时展开一个可选值”错误。 – Larme

+0

@DávidPásztor是的,我确定它不是keyWindow,它是行: self.present(saveNewItem,animated:true,completion:nil) 这会导致错误。 –

回答

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()方法返回零。 试试这个: saveNewItem? = SaveNewItem() println(saveNewItem?)

它返回零吗?

+0

它将此视为连续的陈述,不会构建。 –

+0

所以你应该把println放在下一行。我还没有得到堆栈溢出布局,所以我没有把它放在下一行 –

+0

这两个语句都在不同的行上,println语句在另一行。它会产生“连续语句”错误 –