二进制运算符'=='不能应用于'Any?'类型的操作数和'Int'

时间:2018-08-01 10:25:05

标签: ios swift xcode

if let data = data{
   do{
       let parsedData = try JSONSerialization.jsonObject(with: data) as! [String:Any]
       print(parsedData["result"]!)
       let result = parsedData["result"]  as! Int
       if(parsedData["result"] == 0 ){
           print(result)
           let alert = UIAlertController(title: "Success", message: "Favorite Added", preferredStyle: UIAlertControllerStyle.alert)
           alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
           }))
           self.present(alert, animated: true, completion: nil)
       }
    }catch{
       print(error)
    }
}
  

这里给出二进制运算符'=='的错误,不能应用于类型为'Any?'的操作数和'Int'   此错误的图片也已附上

error

4 个答案:

答案 0 :(得分:2)

有两个严重的问题:

  1. 发生错误是因为[String:Any]字典的字典值是Any,未指定。
  2. 前面的崩溃清楚地表明键parsedData的值是字符串,而不是数字

您有两个选择,第一个是有条件向下转换到String,然后检查"0"

if let result = parsedData["result"] as? String, result == "0" { ...

或将字符串转换为Int并检查数字0

if let result = parsedData["result"] as? String,  let intResult = Int(result), intResult == 0 { ...

在这两种情况下,都使用可选绑定安全地展开可选对象

答案 1 :(得分:0)

我先告诉go String,然后转换该字符串 检查像这样的东西

guard let result = parsedData["result"] as! String else {return}
if parsedData["result"] == "0"{
}

答案 2 :(得分:0)

  

此代码对我有用

let parsedData = try JSONSerialization.jsonObject(with: data) as! [String:Any]
                let key = "result"
                let value = parsedData[key] as? Int ?? Int(parsedData[key] as? String ?? "")
                print(value!)
                let result = value!

                if(result == 0){

答案 3 :(得分:-1)

首先将数据转换为int,然后检查此代码。

 let num = data as! Int
 if num == 1{
 print(success)
  }
相关问题