我在swift框架中工作,但我需要支持ObjC。但我有这样的功能:
@objc public func doingSomething(thing:String?,time:Int?)->String{
return result
}
但我收到以下错误:
方法无法标记为@objc,因为参数2的类型无法在Objective-C中表示
你们中任何人都知道解决这个错误吗?或者我该如何解决这个错误?
我真的很感谢你的帮助。
答案 0 :(得分:5)
问题是整数是Objective-C中的原始类型,因此该语言无法将nil
分配给整数类型的变量。因此,在面向Objective-C的方法的签名中不能有Int?
。
作为一种变通方法,您可以将参数设为Int
并定义一个标记值以表示零值(NSNotFound
是在各种" indexOf"中找到的示例。框架中的方法; 0
可能在某些情况下有效),否则您可以将参数键入为NSNumber?
,因为NSNumber
是对象类型,因此可以是nil