Objective c 无法转换类型为';对象';到预期的参数类型';反对';
我正在用Swift重写一个Objective-C项目,我遇到了一个编译器错误。我正在调用定义在Objective-C协议中的方法,该协议具有以下签名:Objective c 无法转换类型为';对象';到预期的参数类型';反对';,objective-c,swift,casting,Objective C,Swift,Casting,我正在用Swift重写一个Objective-C项目,我遇到了一个编译器错误。我正在调用定义在Objective-C协议中的方法,该协议具有以下签名: - (void)startForBuilder:(Object*)builder; 从Swift,我将这种方法称为: plugin.start(for: self) 其中,self是对象的实例,plugin是符合上述协议的对象的实例。我得到的错误是 无法将“Object”类型的值转换为预期的参数类型“Object!” 将self替换为self
- (void)startForBuilder:(Object*)builder;
从Swift,我将这种方法称为:
plugin.start(for: self)
其中,self
是对象的实例,plugin是符合上述协议的对象的实例。我得到的错误是
无法将“Object”类型的值转换为预期的参数类型“Object!”代码>
将self
替换为self
不起作用(因为self
显然不是可选的),我还尝试实例化另一个与self
类型相同的对象,并使用该实例作为参数来检查错误是否消失,但它仍然存在
什么可能导致此错误?尝试将ObjC参数显式声明为非可选:-(void)startForBuilder:(Object*\u Nonnull*)builder
尝试过,现在它说无法将类型“Object”的值转换为预期的参数类型“Object”/edit:我认为这是因为Object
类现在被Swift版本替换,协议中的代码仍然需要Objective-C类(为了避免循环导入,我将在协议的接口文件中将类声明为@class Object;
)。我将尝试对其进行排序,然后返回并给出答案