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語句在另一行。它會產生「連續語句」錯誤 –