我正在使用 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()
}
请检查这个:
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 线程中调用您的函数,因为您是在另一个异步运行的线程中调用它。