2016-08-18 69 views
1

雨燕2.2, IOS 9, 境界與境界prepareForSeque和IBAction爲

最新版本的問題我有一個典型的兩個控制器項目,他們都的TableView控制器。

的ViewController 1是項目的列表:ItemsViewController 的ViewController 2具有將項目添加到跳閘的能力= ItemDetailsViewController

製備細節和保存細節的代碼是在細節控制器使用基本prepareForSeque完成和列表控制器中的@IBAction函數

當使用基本數組完成此操作時,所有工作都很好。當時的數組被稱爲項目和單個元素稱爲項目。

但是,當我將其轉換爲Realm項目時,出現了問題。

我開始在@IBAction函數裏面的ItemsViewController中發現錯誤。

要追查我進行的細節控制器寫入命令主要作爲解決問題的活動的錯誤,但打算把它移動到列表控制器,一旦我理清頭緒

準備賽格瑞代碼

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "SaveItemDetail" { 

     item.id = NSUUID().UUIDString 
     item.name = nameTextField.text! 

     try! uiRealm.write { 
      uiRealm.add(item) 
     } 

    } 

} 

IBAction的第1版。

@IBAction func saveTripDetail(segue:UIStoryboardSegue) {  

} 

在這個版本中,我什麼都不做,我在塊的最後得到一箇中斷錯誤。或者,如果我把打印(「世界你好」)在運行時得到休息的錯誤

2版 如果我試圖讓從細節控制器

@IBAction func saveItemDetail(segue:UIStoryboardSegue) { 

    if let itemDetailsViewController = segue.sourceViewController as? ItemDetailsViewController { 
     if let item = itemDetailsViewController.item { 
     } 
    } 

} 

項目的信息在這個版本我不能構建工作,並具有以下錯誤

initialiser for conditional binding must have Optional type not 'Item' 

所以我清楚地失蹤境界是如何工作的帶班並不能真正明白爲什麼東西。對此有何想法?

+0

好像錯誤是對你的版本1這是其他線程,第2版是犯規似乎是其相關領域,其斯威夫特的東西,因爲你做的'如果let'檢查對象這是非可選的,所以你有這個錯誤,因爲它假設永遠不會是'零',仍然有點難以看到這裏真正的問題是什麼...也許寫得更清楚 – Tj3n

+0

你能否提供你得到的錯誤信息V1?至於v2,如果你的'itemDetailsViewController.item'不是選項,你不需要使用'if let ..'。 – Dmitry

+0

好吧,看起來好像在評論中有一些東西,迅速不是解釋爲評論,因此造成了一個問題。我吹走了所有評論,儘管事情並不完美,但所有奇怪的錯誤都消失了 –

回答

1

好的,這一切似乎都歸結爲一些快速解釋的註釋代碼,因此引發了各種各樣的問題,從而導致我陷入各種各樣的兔子漏洞。

關閉問題