二元运算符'??'不能应用于'AnyObject'类型的操作数?和'字符串'

时间:2016-10-05 10:31:30

标签: swift swift3 binary-operators

我已经使用Swift 2.2完成了下面的代码,但是当切换到Swift 3.0时,如果条件为“二元运算符”,则会出现错误不能应用于'AnyObject'类型的操作数?和'字符串'“

if let custID = dataDict["cust_id"] ?? "",
let custName = dataDict["cust_name"] ?? "",
let fileName = dataDict["filename"] ?? "",
let transNumber = dataDict["trans_no"] ?? "" {

linesheet_custID = (custID["text"] ?? "" ) as! String
linesheet_custName = (custName["text"] ?? "" ) as! String
linesheet_filename = (fileName["text"] ?? "" ) as! String
linesheet_TransNumber = (transNumber["text"] ?? "" ) as! String
}

请建议解决方案,如上面的代码中if if语句如果字典值返回nil则我将空字符串指定为(“”)特定键

3 个答案:

答案 0 :(得分:4)

您应该将从词典中获得的值转换为可选的字符串。

例如:

let custID = (dataDict["cust_id"] as String?) ?? ""

答案 1 :(得分:0)

这样做:

let custID = dataDict["cust_id"] as? String ?? ""

答案 2 :(得分:0)

我在Swift 3中遇到了与Date对象相同的错误。 编译器似乎没问题:

let noStartDate = "No start date" let description = "(\(self.startDate?.toString() ?? noStartDate)) - \(campaignNotes)"