Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 无法转换类型为';对象';到预期的参数类型';反对';_Objective C_Swift_Casting - Fatal编程技术网

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

我正在用Swift重写一个Objective-C项目,我遇到了一个编译器错误。我正在调用定义在Objective-C协议中的方法,该协议具有以下签名:

- (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;
)。我将尝试对其进行排序,然后返回并给出答案