当前位置: 首页 > 知识库问答 >
问题:

二进制运算符“??”无法应用于“AnyObject”类型的操作数和“字符串”

严誉
2023-03-14

我用Swift 2.2编写了以下代码,但当切换到Swift 3.0时,如果条件“二进制运算符”不能应用于“AnyObject”和“String”类型的操作数,则会出现错误

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,则我为特定键指定了空白字符串(“”)

共有3个答案

邬宏扬
2023-03-14

我在Swift 3中的日期对象中遇到了相同的错误。编译器似乎可以:

让noStartDate=“无开始日期”让description=“(\(self.startDate?.toString()???noStartDate))-\(活动注释)”

郭通
2023-03-14

执行以下操作:

let custID = dataDict["cust_id"] as? String ?? ""
许振海
2023-03-14

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

例如:

let custID = (dataDict["cust_id"] as String?) ?? ""
 类似资料: