我已经使用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则我将空字符串指定为(“”)特定键
答案 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)"