不能转换值类型"字符串?"预期的参数类型" inout string"

时间:2016-10-11 10:07:48

标签: swift string swift2 swift3

此行self.displayResultLable.text += (title as! String)错误抛出

  

无法转换值类型"字符串?"预期的参数类型" inout string"

这是我的代码:

   if results.count > 0 {
                    var displayResult : String?
                    for books in results as! [NSManagedObject] {

                        if let title = books.valueForKey("title") {

                            self.displayResultLable.text +=  (title as! String)

                        }
                    }
                }

这里的inout字符串是什么?什么是最佳做法?

请注意此行self.displayResultLable.text = (title as! String)正常工作:

2 个答案:

答案 0 :(得分:18)

你需要这样写:

self.displayResultLable.text =  self.displayResultLable.text! + title as! String

这是因为左侧是可选的而右侧不是,它们不匹配。这就是你需要写label.text = label.text + ...

的原因

我还建议您将if let更改为此内容:

if let title = books.valueForKey("title") as? String {
   self.displayResultLable.text = (self.displayResultLable.text ?? "") + title
}

答案 1 :(得分:1)

我建议您仅在可选(self.displayResultLable.text)为非null时,才使用可选链接运算符执行文本添加操作:

self.displayResultLable.text? +=  (title as! String)