雨燕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'
所以我清楚地失踪境界是如何工作的带班并不能真正明白为什么东西。对此有何想法?
好像错误是对你的版本1这是其他线程,第2版是犯规似乎是其相关领域,其斯威夫特的东西,因为你做的'如果let'检查对象这是非可选的,所以你有这个错误,因为它假设永远不会是'零',仍然有点难以看到这里真正的问题是什么...也许写得更清楚 – Tj3n
你能否提供你得到的错误信息V1?至于v2,如果你的'itemDetailsViewController.item'不是选项,你不需要使用'if let ..'。 – Dmitry
好吧,看起来好像在评论中有一些东西,迅速不是解释为评论,因此造成了一个问题。我吹走了所有评论,尽管事情并不完美,但所有奇怪的错误都消失了 –