Swift:函数签名中的可选变量显示错误方法因为类型而无法标记为@objc

时间:2017-10-31 17:51:09

标签: swift4

我在swift框架中工作,但我需要支持ObjC。但我有这样的功能:

@objc public func doingSomething(thing:String?,time:Int?)->String{

    return result
}

但我收到以下错误:

  

方法无法标记为@objc,因为参数2的类型无法在Objective-C中表示

你们中任何人都知道解决这个错误吗?或者我该如何解决这个错误?

我真的很感谢你的帮助。

1 个答案:

答案 0 :(得分:5)

问题是整数是Objective-C中的原始类型,因此该语言无法将nil分配给整数类型的变量。因此,在面向Objective-C的方法的签名中不能有Int?

作为一种变通方法,您可以将参数设为Int并定义一个标记值以表示零值(NSNotFound是在各种" indexOf"中找到的示例。框架中的方法; 0可能在某些情况下有效),否则您可以将参数键入为NSNumber?,因为NSNumber是对象类型,因此可以是nil