2016-04-22 10 views
0

私はiOSと迅速な開発を使い慣れていません。私は最近AlamofireのlibをV3.0に移行し、コードエラーが発生しました。私はそれらをすべて解決することができました。しかし、最後の問題があります。 Webサービスを呼び出すために使用されるWebservicesというクラスがあります。 postCustomLoginというメソッドがあります。私はそれがこのラインでクラッシュアプ​​リを実行したときに、私のviewcontrollersの一つで、私は、それを呼んでいる:NSJSONSerialization.JSONObjectWithDataは、alamofireの移行後にクラッシュするアプリ

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) 
    } 
} 

、ここでは、関数を呼び出す:

Webservices.postCustomLogin(user!, password: password!, completionHandler: { (result) in 
      do { 
       if (result.value != nil) 
       { 
        errorCode = try NSJSONSerialization.JSONObjectWithData(result.value as! NSData , options:NSJSONReadingOptions.AllowFragments) as! NSString//crash 

答えて

1

あなたのオプションのラップを強制しています。 result.valueNSDataまたは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 
    .... 
    .... 
} 
関連する問題