if条件在swift ios中的json响应中

Posted

技术标签:

【中文标题】if条件在swift ios中的json响应中【英文标题】:if condition in json response in swift ios 【发布时间】:2017-02-13 10:23:43 【问题描述】:

如果服务器响应是 (result = "Account Exists") 那么我可以做点什么。但是当我比较结果时,它给出了一个错误,“二进制运算符'=='不能应用于'Any'和'String'类型的操作数”。

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()

【问题讨论】:

我得到“无法将 '__NSSingleObjectArrayI' (0x10d935d60) 类型的值转换为 'NSString' (0x10cb46c40)”@EICaptainv2.0 您的回复如何? 这是 JSON data = ( Result = "Unauthorized Access"; ); 当 Result = "Unauthorized Access" 我想做点什么 【参考方案1】:

以纯粹的快速方式..您的“数据”是一个数组,*** 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")
    

【讨论】:

它有效。谢谢@EICaptainv2.0 很高兴它有帮助..快乐 2 帮助你 :)【参考方案2】:

请在您的代码下方更新并检查它

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

【讨论】:

我收到此错误“无法调用非函数类型'String'的值”@Sunil prajapati【参考方案3】:

如果你的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

【讨论】:

以上是关于if条件在swift ios中的json响应中的主要内容,如果未能解决你的问题,请参考以下文章

Java中条件语句和if-else的嵌套原则

React中条件渲染和循环

有条件地导入Vue中条件存在的文件

hive中条件判断函数if/COALESCE/CASE/

在c中条件编译#if和#else(和其他)的工作

如何避免 VxWorks 中条件变量中的竞争条件