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)没有数据时如何显示警报的主要内容,如果未能解决你的问题,请参考以下文章
调用 REST API 时如何处理 Google Ads API 速率限制?