Swift 2.2中API(JSON)没有数据时如何显示警报

问题描述 投票:0回答:2

我正在使用 Swift 2.2 开发一个应用程序。在我的应用程序中,我将(API)JSON数据解析为表视图,当API有一些数据时,我能够解析它,但是当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()
}
ios swift swift2 tableview
2个回答
0
投票

请检查这个:

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
    }
}*/

0
投票

创建以下函数,允许您显示警报框:

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 中检查响应是否为 nil,如果为 nil,则调用 displayAlertMessage 函数来显示警报框,如下所示:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.