1

我已经用 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 let 语句如果字典值返回 nil 然后我将空白字符串分配为 ("") 特定键

4

3 回答 3

4

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

例如:

let custID = (dataDict["cust_id"] as String?) ?? ""
于 2016-10-05T10:37:34.167 回答
0

做这个:

let custID = dataDict["cust_id"] as? String ?? ""
于 2016-10-11T23:34:37.903 回答
0

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

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

于 2017-01-23T22:14:43.990 回答