我正在使用 Swift,但在运行我的项目时遇到了一个奇怪的问题。
我有两个类:homeViewController 和 Photo。
这是主要代码:
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-Token")
如果我将 addPhoto() 代码直接放在 homeViewController.publishPhoto 中,它就可以工作...
这是我第一次使用 iOS,我不知道我做错了什么。
最佳答案
在设置 header 字段之前尝试创建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()
关于swift - 使用 Swift 执行 EXC_BAD_INSTRUCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24134901/