2014-06-10 38 views
2

我在玩Swift,我有一個奇怪的問題來運行我的項目。EXC_BAD_INSTRUCTION與Swift

我有兩個類:homeViewController照片

這是主代碼:

homeViewController:

class homeViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UITextViewDelegate, UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource{ 
// .... some code... 
func publishPhoto(){ 

     var photo = Photo() 

     // Establecemos el loading 
     photoDesc.resignFirstResponder() 
     let loading = MBProgressHUD.showHUDAddedTo(self.view, animated: true) 
     loading.mode = MBProgressHUDModeDeterminate 
     loading.labelText = "Un segundo por favor..."; 

     var imageData = UIImageJPEGRepresentation(photoInfo["UIImagePickerControllerOriginalImage"] as UIImage, 100.0) 

     photo.addPhoto() 

     MBProgressHUD.hideAllHUDsForView(self.view, animated: true) 

    } 
// .... some code .... 
} 

照片

import Foundation 
import UIKit 

class Photo: UIViewController{ 

    func addPhoto(){ 

     var homeCtrl = homeViewController() 

     homeCtrl.photoDesc.resignFirstResponder() 

     var imageData = UIImageJPEGRepresentation(homeCtrl.photoInfo["UIImagePickerControllerOriginalImage"] as UIImage, 100.0) 

     let manager = AFHTTPRequestOperationManager() 
     manager.requestSerializer.setValue("608c6c08443c6d933576b90966b727358d0066b4", forHTTPHeaderField: "X-Auth-Token") 
     var parameters = ["user":"admin","password":"123456", "image" : imageData] 
     manager.POST("http://misdemos.dev/simpleApi/prueba", 
      parameters: parameters, 
      success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) in 
       println("JSON: " + responseObject.description)   }, 
      failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in 
       println("Error: " + error.localizedDescription) 
      }) 

    } 

} 

,我發現了錯誤EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)這一行:

manager.requestSerializer.setValue( 「608c6c08443c6d933576b90966b727358d0066b4」, forHTTPHeaderField: 「X-驗證令牌」)

如果我把addPhoto()直接在homeViewController.publishPhoto它的工作原理代碼...

這是我第一次與iOS,我不知道我做錯了什麼。

+3

順便說一句:EXC_BAD_INSTRUCTION幾乎總是由標準庫斷言失敗發出的。斷言故障故意發出錯誤的CPU指令來暫停程序。您經常會看到它們由於對象沒有正確設置而導致它們爲零。 –

+0

可能會嘗試在Beta 3下運行,現在有一些控制檯消息會導致此問題。在我的情況下,可可方法返回一個隱式解包的可選(Type!的返回類型),您不必檢查,但仍可能爲零。 –

回答

2

嘗試在設置標題字段之前創建requestSerializer和responseSerializer。

例如JSON序列:

manager.requestSerializer = AFJSONRequestSerializer() 
manager.responseSerializer = AFJSONResponseSerializer() 

另一種選擇是這樣的創建要求:

let request: NSMutableURLRequest = NSMutableURLRequest(URL: "http://misdemos.dev/simpleApi/prueba") 
request.setValue("608c6c08443c6d933576b90966b727358d0066b4", forHTTPHeaderField: "X-Auth-Token")  
let operation: AFHTTPRequestOperation = AFHTTPRequestOperation(request: request)  

// e.g. response is json 
operation.responseSerializer = AFJSONResponseSerializer() 
operation.setCompletionBlockWithSuccess(...) 

operation.start() 
相關問題