昨天在开发公司的ios程序时,遇见一个json解析的问题,并且是一个非常奇怪的问题。
因为原来的代码比较复杂,所以对代码进行了一些简化,具体代码如下:
服务器返回格式(PHP):
array( array(‘title‘ => ‘新浪‘,‘address‘ => ‘http://www.sina.com.cn‘), array(‘title‘ => ‘网易‘,‘address‘ => ‘http://www.163.com‘) );
解析部分的代码如下:
var jsonData : AnyObject! = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableLeaves,error:nil); var links = [Link](); if let linksData = jsonData as? NSArray { for linkData : AnyObject! in linksData { if let linkDict = linkData as? NSDictionary { let link = Link(); link.title = linkDict["title"] as String; link.address = linkDict["address"] as String links.append(link); } } }
本来这是非常简单的一个解析,并且执行到这里的时候也不会出现任何问题,但关键是执行完成后继续应用程序会报一个BAD_ACCESS的错误访问。
后面采用了多种方法,后面尝试了多种方法,偶然间在写另外一种方法时没有出错,检查两者发现差异在这段代码:
for linkData : AnyObject! in linksData
不出错代码:
for linkData in linksData
具体原因,因为我对swift也不是很熟悉,所以也不清楚。
但后面将所有的 :AnyObject!去除,发现程序没有出现BAD_ACCESS错误了。
记录一下,希望对于遇见这个问题的人所有帮助。
时间: 2024-10-13 11:28:26