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

Ios 当api(json)在swift 2.2中没有数据时,如何显示警报,ios,swift,api,swift2,tableview,Ios,Swift,Api,Swift2,Tableview,我正在使用Swift 2.2开发一个应用程序。在我的应用程序中,我正在将(API)JSON数据解析到表视图。当API有一些数据时,我能够解析它,但当API没有数据时,我的应用程序正在终止(崩溃),因此请帮助我显示当前视图控制器,而不终止应用程序 我的视图控制器中的代码: func jsonParsingFromURL () { let url = NSURL(string: "https://www.something.com") NSURLConnection.sendAsyn

我正在使用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()
}
func jsonParsingFromURL(){
让url=NSURL(字符串:https://www.something.com")
NSURLConnection.sendAsynchronousRequest(请求,队列:NSOperationQueue.mainQueue()){(响应,数据,错误)在
self.startParsing(数据!)
}
func StartPassing(数据:NSData){
让dict:NSDictionary!=(试试!NSJSONSerialization.JSONObjectWithData(数据,选项:NSJSONReadingOptions.MutableContainers))作为!NSDictionary
对于var i=0;i<(dict.valueForKey(“驱动程序计划”)as!NSArray)。计数;i++
{
arrDict.addObject((dict.valueForKey(“驱动程序计划”)作为!NSArray.objectAtIndex(i))
TableView.reloadData()
}
请检查以下内容:

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
    }
}*/
请检查以下内容:

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

创建以下功能,允许您显示警报框:

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线程中调用函数,因为您正在异步运行的另一个线程中调用该函数。

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

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线程中调用函数,因为您正在异步运行的另一个线程中调用该函数。

当该函数失败时,控制台中的错误是什么?致命错误仅因为api没有数据,这意味着它会出现此错误,如果api有任何数据,则崩溃我的应用程序意味着它在解析到我的表视图时没有问题ut任何问题哪个错误是正确的检查我的回答当它失败时,控制台中的错误到底是什么?致命的错误仅仅因为api没有数据就意味着它给出了这个错误,并使我的应用程序崩溃如果api有任何数据就意味着没有问题它解析到我的表视图中没有任何问题哪个错误是正确的检查我的回答我必须用于循环有可能吗e@rajkumar检查我用于循环的答案发生内部错误源代码编辑器功能受限尝试还原xcode…我收到此警告如何解决this@rajkumar检查这个链接,我必须使用循环有可能吗here@rajkumar检查我的答案,我使用了一个内部错误发生源编辑器功能尝试还原xcode时受到限制…我得到的警告是如何解决此问题this@rajkumar检查此链接发生内部错误源编辑器功能受限尝试还原xcode…am收到此警告如何解决此问题发生内部错误源编辑器功能受限尝试还原xcode…am将此作为如何解决此问题的警告