我是iOS和快速开发的新手。我最近将alamofire lib迁移到了V3.0,导致代码错误。我设法解决了所有问题。然而,最后一个问题。我有一个名为Webservices的类用于调用Web服务。它有一个名为postCustomLogin的方法。在我的一个视图控制器中,我调用它,当我运行应用程序时,它在此行崩溃:
Set objShell = CreateObject("Wscript.Shell")
objShell.Run("powershell.exe -noexit .\test.ps1")
这是函数的定义:
errorCode = try NSJSONSerialization.JSONObjectWithData(result.value as! NSData , options:NSJSONReadingOptions.AllowFragments ) as! NSString
这就是我调用函数的地方:
class func postCustomLogin(email: String, password: String, completionHandler: ( Result<AnyObject, NSError>) -> Void) {
Alamofire.request(.POST, baseURL + "CustomLogin", parameters: ["email": email, "password": password])
.validate()
.responseJSON {(response) in
if (response.result.isSuccess) {
if let jsonDict = response.result.value as? NSDictionary {
User.createEntityWithDictionnary(jsonDict)
//Save NSManagedObjectContext.MR_defaultContext().MR_saveToPersistentStoreAndWait()
}
}
completionHandler(response.result)
}
}
答案 0 :(得分:1)
您正在强制解开您的期权。如果您的result.value
不是NSData
,或try NSJSONSerialization.JSONObjectWithData(result.value as! NSData , options:NSJSONReadingOptions.AllowFragments ) as! NSString//crash
不是NSString
您的应用崩溃。尝试使用此代码进行安全解包:
if let resultData = result.value as? NSData{
if let anErrorCode = try NSJSONSerialization.JSONObjectWithData(resultData , options:NSJSONReadingOptions.AllowFragments ) as? NSString
error = anErrorCode
....
....
}