2017-02-13 1 views
0

Если ответ сервера (результат = «Учетная запись»), я могу что-то сделать. но когда я сравниваю результат, он дает ошибку, что «двоичный оператор« == »не может применяться к операндам типа« Any »и« String ».Если условие в json-ответе в swift ios

let dataTask = session.dataTask(with: url!, completionHandler: { (data, response, error) -> Void in 

     do 
     { 
      let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! NSDictionary 

      print("JSON : \(json)") 

      if let dataDic = json.value(forKey: "data") 
      { 
      print("dataDic: \(dataDic)") 

      if let Result = (dataDic as AnyObject).value(forKey: "Result") 
      { 
      print("Result: \(Result)") 

       if (Result ("Account Exists")) == 0 
       { 
        //... DO Something 
       } 
      } 
      } 
     } 
     catch 
     { 
      print("Catch exception") 
     } 
    }) 
    dataTask.resume() 
} 
+0

я получил "Не удалось бросить значение типа '__NSSingleObjectArrayI' (0x10d935d60) к 'NSString' (0x10cb46c40)" @ EICaptainv2.0 –

+0

Как ваш ответ выглядит? –

+0

Это JSON { data = ( { Результат = "Несанкционированный доступ"; } ); } –

ответ

0

В чистом быстром пути .. ваши «данные» массив и Top JSON уровня словаря

do 
    { 
     let json = try JSONSerialization.jsonObject(with: data!, options: []) as! [String:Any] 

     if let data = json["data"] as? [[String:String]] { 
      if let resultString = data.first?["Result"] as? String{ 
       if resultString == "Account Exists"{ 
        //... DO Something 
       } 
       else if resultString == "Unauthorized Access" { 
        //... DO Something 
       } 
      } 
     } 
    } 
    catch{ 
     print("Catch exception") 
    } 
+0

Это работает. Спасибо @ EICaptainv2.0 –

+0

рад, что это помогает .. happy 2 help u :) –

0

пожалуйста, обновите ниже код и проверить его

if (Result ("Account Exists") as! String) == "0" 
{ 
     //... DO Something 
} 
+0

i Получил эту ошибку «Не могу вызвать значение нефункционного типа« String »« @Sunil prajapati –

+0

, пожалуйста, см. Обновленный мой ответ –

0

Если ваш Result является строкой, то вам нужно разворачивать его соответствующим образом, а затем сравнить, вы можете осуществлять сравнение в то время как анврапинью, вы может сделать что-то вроде

if let Result = (dataDic as AnyObject).value(forKey: "Result") as? String, Result == "Unauthorized Access" 
{ 
    print("Result: \(Result)") 
    // DO whatever you want here in case of Unauthorised access 
} 
Смежные вопросы