无法解开可选 - 无Swift

时间:2014-06-27 11:33:56

标签: ios swift

我向你保证,我在发布这个问题之前检查了所有的答案,然后解开一个对象,但这件事对我来说似乎并不适用。我只是试图将我的单元格中的文本值传递到下一个屏幕上的标签。

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {

    if(segue.identifier == "detailViewSegue")
    {
        var DVC:DetailedViewController = segue.destinationViewController as DetailedViewController
        let path:NSIndexPath = self.tableView.indexPathForSelectedRow()
        var segueRecipeName:String = recipeMgr.RecipeName[path.row] as String
        DVC.detailedRecipeLabel.text = segueRecipeName
        } 
}

问题出现在这一行 -

DVC.detailedRecipeLabel.text = segueRecipeName //Can't UnWrap Optional - None

我知道我应该在分配之前检查segueRecipeName的nil值。我在控制台上进行了打印检查,但显然不是空的。仅当我将值分配给第二个视图控制器类对象时才会发生错误。我确信这会帮助其他人学习Swift:)

1 个答案:

答案 0 :(得分:0)

DVC.detailedRecipeLabelnil

可能是IBOutlet尚未加载。

您应该向DetailedViewController添加一个自定义属性,该属性将接受您的文字,保存,然后您可以将其分配到viewDidLoad中的标签。

示例:

class DetailedViewController ... {
  ...
  var recipeName: NSString? = nil

  ...

  override func viewDidLoad() -> () {
     ...
     self.detailedRecipeLabel.text = self.recipeName
  }
}   


DVC.recipeName = segueRecipeName