2014-06-10 37 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() 
相关问题