Realm prepareForSeque和IBAction的问题

时间:2016-08-18 08:23:17

标签: ios swift2 realm

Swift 2.2, IOS 9, 最新版本的Realm

我有一个经典的两个控制器项目,它们都是TableView控制器。

ViewController 1是Items:ItemsViewController的列表 ViewController 2能够将项目添加到trip = ItemDetailsViewController

使用详细信息控制器中的基本prepareForSeque和列表控制器中的@IBAction函数来完成准备详细信息和保存详细信息的代码

当使用基本数组完成时,一切运行良好。当时的数组被称为items和一个名为item的元素。

但是,当我将其转换为Realm项目时,事情出了问题。

我开始在@IBAction函数内的ItemsViewController中出错。

为了追踪错误,我在详细信息控制器中执行了写入命令,主要是作为故障排除活动,但打算在我解决问题后将其移动到列表控制器

准备segue代码

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) {    

}

在这个我什么都不做的版本中,我在块结束时遇到了中断错误。或者,如果我输入一个打印(“hello world”),那么在运行时会出现中断错误

第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'

所以我明显错过了Realm如何使用类而无法真正理解原因的内容。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好吧,这一切似乎都归结为一些注释掉的代码,这些代码很快就会解释,从而导致各种各样的问题,然后导致我陷入各种各样的兔子洞。

结束问题