我有一个Objective C函数声明为:
+ (BOOL)isScanningUnsupported:(NSError **)error;
如果它返回true,我必须在我从(Swift)调用它的函数中返回nil。
所以我打电话给这样:
var isUnsupported = false
do { try isUnsupported = PPCoordinator.isScanningUnsupported()
} catch let error { throw error }
if isUnsupported {return nil }
但它告诉我:
无法指定类型'()'的值价值为' Bool'
在Objective C中,它被称为:
if ([PPCoordinator isScanningUnsupported:error]) {
return nil;
}
我该怎么办?
答案 0 :(得分:4)
您正在描述在Swift中解释在Objective-C中产生错误的函数的标准方法。 Objective-C中接受错误指针并返回BOOL的方法被假定为void并默认抛出Swift。
这是因为它几乎总是在Objective-C中意味着什么。 ie表示“成功运行”,false表示“失败,我将错误放在您提供的指针中”。
您的方法不符合正常的Objective-C约定,因此您可以尝试在PPCoordinator.isScanningUnsupported的声明中禁用Swift转换为使用NS_SWIFT_NOTHROW
宏的抛出函数。
答案 1 :(得分:1)
我想你想要:
.index{
height: 100%;
background-image: url("../images/index-bg.jpg");
background-size: cover;
background-repeat: no-repeat;
}
如果你看一下函数的Swift定义,我会期望没有返回值(即void)。
答案 2 :(得分:0)
这对我现在有用了:
if let _ = try? PPCoordinator.isScanningUnsupported() { return nil }