swift 2.2中api(json)没有数据时如何显示警报

Posted

技术标签:

【中文标题】swift 2.2中api(json)没有数据时如何显示警报【英文标题】:How to display alert when api(json) has no data in swift 2.2 【发布时间】:2016-11-18 10:19:55 【问题描述】:

我正在使用 Swift 2.2 开发应用程序。在我的应用程序中,当 API 有一些数据时,我正在将(API)JSON 数据解析到表视图,我能够解析它,但是当 API 没有数据时,我的应用程序正在终止(崩溃)所以帮助我显示当前视图控制器而不终止应用程序。

我的视图控制器中的代码:

func jsonParsingFromURL () 
    let url = NSURL(string: "https://www.something.com")
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) (response, data, error) in
    self.startParsing(data!)


func startParsing(data: NSData)
    let dict: NSDictionary!=(try! NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
    for var i = 0 ; i < (dict.valueForKey("driver_schedule") as! NSArray).count ; i++
    
        arrDict.addObject((dict.valueForKey("driver_schedule") as! NSArray) .objectAtIndex(i))
        TableView.reloadData()

【问题讨论】:

当它失败时,控制台中的错误究竟是什么? 致命错误只是因为 api 没有数据意味着它给出了这个错误并导致我的应用程序崩溃 如果 api 有任何数据意味着没有问题它解析到我的表格视图没有任何问题 哪个错误来了 检查我的答案 【参考方案1】:

请检查:

if let elim = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary

    // Write your code here
    // Check whether it has value or not
    self.nullToNil(dict["driver_schedule"] as? String)!

    print("Valid")

else 
      print("Print here")


do       
   var Arr: NSArray!
   Arr = dict.objectForKey("driver_schedule")! as! NSArray
   if(Arr.count > 0)
   
      for x in 0... Arr.count - 1
      
        let str = Arr.objectAtIndex(i)
        if(str.length > 0)
        
          arrDict.addObject(Arr.objectAtIndex(i))
          TableView.reloadData()
        
       
    
 catch _
/*override func nullToNil(value : String?) -> String?

    if value == nil
    
        let str:String = ""
        return str
    
    else
    
        return value
    
*/

【讨论】:

我必须使用 for 循环这里有可能 @rajkumar 检查我用于循环的答案 发生内部错误 源编辑器功能在尝试恢复 xcode 时受到限制...我收到此警告作为如何解决此问题的警告 @rajkumar 检查此链接***.com/questions/37805017/…【参考方案2】:

创建下面的函数来显示警告框:

func displayAlertMessage(msg: String)

    let alert=UIAlertController(title: "Alert", message: msg, preferredStyle: UIAlertControllerStyle.Alert)
    let okAction=UIAlertAction(title: "Ok",style: UIAlertActionStyle.Default,handler: nil)
    alert.addAction(okAction)
    self.presentViewController(alert, animated: true, completion: nil)


并在你的函数 jsonParsingFromURL 检查响应是否为零,如果它为零,则调用 displayAlertMessage 函数以显示如下所示的警报框:

NSOperationQueue.mainQueue().addOperationWithBlock
    
        self.displayAlertMessage("Your message");
    

"NSOperationQueue.mainQueue().addOperationWithBlock" 将允许您在主 ui 线程中调用您的函数,因为您是在另一个异步运行的线程中调用它。

【讨论】:

发生内部错误 源编辑器功能在尝试恢复 xcode 时受到限制...我收到此警告作为如何解决此问题的警告

以上是关于swift 2.2中api(json)没有数据时如何显示警报的主要内容,如果未能解决你的问题,请参考以下文章

同步 API 请求到异步 API 请求 Swift 2.2

Alamofire json swift 2.2

快速处理两个不同的http json响应

调用 REST API 时如何处理 Google Ads API 速率限制?

从 Guidebox API 在 Swift 中解析 JSON 数据

在 Swift 中解析 JSON API [关闭]