2014-06-10 4 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-Auth-Токен")

Если я поставил addPhoto() код непосредственно в homeViewController.publishPhoto он работает ...

Это мой первый раз с iOS, и я не знаю, что я делаю неправильно.

+3

Как и в сторону: EXC_BAD_INSTRUCTION почти всегда выдаваемый провал утверждения в стандартной библиотеке. Ошибки утверждений преднамеренно вызывают неудачную команду CPU для остановки программы. Вы часто видите, что они вызваны тем, что объект равен нулю, потому что он не настроен должным образом. –

+0

Можете попробовать запустить под бета-версией 3, теперь есть консольное сообщение для некоторых случаев, которые вызывают это. В моем случае метод какао возвращал неявно развернутый необязательный (возвращаемый тип Type!), Который вам не нужно проверять, но все равно может быть nil. –

ответ

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() 
Смежные вопросы