错误抛出Objective-C函数未被XCode 6.4翻译成Swift



我修改了objective C中的一个函数来抛出错误。然后我想在Swift中捕获这些错误。我实现了桥接函数,看起来一切都井然有序。我得到错误:

一行中连续的语句必须用';'分隔

就在命令后面:

try rfduino.send(data)

如果我不使用try,它开始要求我输入第二个参数。在我实现此错误处理之前,该函数工作。我使用XCode 6.4。

我也读了http://blog.benjamin-encz.de/swift-error-handling-and-objective-c-interop-in-depth/当函数返回BOOL或objective - c类型时,XCode只将该函数转换为类似swift的错误抛出函数。我也试过了。

会是什么呢?

我的。h文件看起来像:

- (BOOL)send:(NSData *)data
       error:(NSError**) errorPtr;

:

- (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。

Consecutive statements...通常在Xcode不理解语法时出现:事实上,do try catch仅在Xcode 7+与Swift 2中可用。

最新更新