使用NSErrorPointer在使用Obj-C和Swift之间的桥时会出错

时间:2014-06-04 13:01:59

标签: swift

我打算在Cocoapods上使用AZSocketIO来使用socket.io。我想在调用AZSocketIO#emit()。

时使用NSErrorPointer来获取错误
var emitError : NSError?
socket.emit("deviceInfo", args: deviceInfo, error: &emitError)

AZSocketIO.h:

- (BOOL)emit:(NSString *)name args:(id)args error:(NSError *__autoreleasing *)error ackWithArgs:(void (^)(NSArray *data))callback;

如果我运行这个程序,我会得到这样的运行时错误:

fatal error: attempt to bridge an implicitly unwrapped optional containing nil

我该如何解决?

2 个答案:

答案 0 :(得分:1)

您可以尝试将emitError声明为AutoreleasingUnsafePointer<NSError?>。另请参阅https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-XID_13

var emitError: AutoreleasingUnsafePointer<NSError?>
socket.emit("deviceInfo", args: deviceInfo, error: emitError, ackWithArgs: nil)

答案 1 :(得分:0)

您忘了将nil设置为可选变量。

var emitError: NSError? = nil