我修改了 Objective C 中的一个函数来引发错误。然后我想在 Swift 中捕获这些错误。我实现了桥接功能,看起来一切正常。我收到错误:
Consecutive statements on a line must be separated by ';'
紧接在命令之后:
try rfduino.send(data)
如果我不使用try
,它就会开始询问我第二个参数。在我实现此错误处理之前,该函数就起作用了。我正在使用 XCode 6.4。
我还读过 http://blog.benjamin-encz.de/swift-error-handling-and-objective-c-interop-in-depth/ 当函数返回 BOOL 或 ObjectiveC 类型时,XCode 仅将函数转换为类似 Swift 的错误抛出函数。我也尝试过。
它可能是什么?
我的 .h 文件如下所示:
- (BOOL)send:(NSData *)data
error:(NSError**) errorPtr;
在 .m 文件中:
- (BOOL)send:(NSData *)data
error:(NSError**)errorPtr
{
if (! loadedService) {
if (errorPtr) {
*errorPtr = [NSError errorWithDomain:NSCocoaErrorDomain
code:NSFileNoSuchFileError
userInfo:@{NSLocalizedDescriptionKey: NSLocalizedString(@"No Device Connected.", nil),
NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The connection is not loaded.", nil),
NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Try disconnecting and connecting again", nil)
}];
} else {
@throw [NSException exceptionWithName:@"sendDataNoDevice" reason:@"please wait for ready callback" userInfo:nil];
}
return(NO);
}
if ([data length] > max_data) {
if (errorPtr) {
*errorPtr = [NSError errorWithDomain:NSCocoaErrorDomain
code:NSFileNoSuchFileError
userInfo:@{NSLocalizedDescriptionKey: NSLocalizedString(@"No Device Connected.", nil),
NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The connection is not loaded.", nil),
NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Try disconnecting and connecting again", nil)
}];
} else {
@throw [NSException exceptionWithName:@"sendDataTooLarge" reason:@"max data size exceeded" userInfo:nil];
}
return(NO);
}
[peripheral writeValue:data forCharacteristic:send_characteristic type:CBCharacteristicWriteWithoutResponse];
return(YES);
}
谢谢!
最佳答案
您必须更新 Xcode。
连续语句...
通常在 Xcode 不理解语法时出现:实际上 do try catch
仅在带有 Swift 2 的 Xcode 7+ 中可用。
关于objective-c - XCode 6.4 抛出未将 Objective-C 函数转换为 Swift 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635848/