【发布时间】:2014-11-17 15:08:29
【问题描述】:
我正在使用一个文件来处理对我的 API 的调用,如下所示:
import UIKit
protocol APIControllerProtocol {
func JSONAPIResults(results: NSArray)
}
class APIController: NSObject {
var delegate:APIControllerProtocol?
func GetAPIResultsAsync(urlString:String, elementName:String) {
//The Url that will be called
var url = NSURL.URLWithString(urlString)
//Create a request
var request: NSURLRequest = NSURLRequest(URL: url)
//Create a queue to hold the call
var queue: NSOperationQueue = NSOperationQueue()
// Sending Asynchronous request using NSURLConnection
NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{(response:NSURLResponse!, responseData:NSData!, error: NSError!) ->Void in
var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
//Serialize the JSON result into a dictionary
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(responseData, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary
//If there is a result add the data into an array
if jsonResult.count>0 && jsonResult["\(elementName)"]?.count > 0 {
var results: NSArray = jsonResult["\(elementName)"] as NSArray
//Use the completion handler to pass the results
self.delegate?.JSONAPIResults(results)
} else {
println(error)
}
})
}
}
我用类似这样的方式来称呼它:
var APIBaseUrl: String = "http://***.se/**/**.php"
var urlString:String = "\(APIBaseUrl)"
self.api.delegate = self
api.GetAPIResultsAsync(urlString, elementName:"groupActivities")
这最近效果很好,但现在我的应用程序崩溃了,我在 APIController 中突出显示了这一行:
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(responseData, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary
我能想到的唯一改变是我从移动 4G 互联网切换到我的 WiFi。
在日志中我得到:fatal error: unexpectedly found nil while unwrapping an Optional value
亮点说:Thread 5: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
无论我调用什么 API,都会发生这种情况。我正在运行 Xcode 6.0.1,并且最近没有进行任何更新。
干杯!
【问题讨论】:
-
人们报告了 Xcode 6GM 和 Wifi 连接的错误。关闭,Xcode & 模拟器,清理 DerviedData 文件夹,然后重试。 stackoverflow.com/questions/25372318/…
-
效果很好,请作为答案发布。虽然同样的错误出现在另一行,但我相信这是我的代码中的一些其他错误,因为其他 API 调用工作正常。非常感谢! @SamBudda
-
如果设备上出现这种情况,是否有解决方案?
标签: ios json swift nsjsonserialization