我正在重写Swift中的Objective-C项目。我已经完成了Swift和Objective-C,MixAndMatch文档的互操作性,并转换了很多类。
这是一个有趣的场景;我有一个用Swift编写的模型类
class FooModel {
@objc override func create(_ data: [String: [String: Any]]) {
...
}
}
当它暴露给ProjectModuleName-Swift.h以便从ObjC代码
进行访问时-(void)create:(NSDictionary<NSString *, NSDictionary *> * _Nonnull)data;
它接受字典类型的参数,该参数可以包含字符串键和字典值。
当从Objective-C代码调用它时,如果我传递一个带有字符串键和不同值类型的字典,它就会崩溃。因为Swift期望每个值都有一个字典。
如何在暴露于swift标头时控制该函数或保证@nonobjc不会破坏方法调用?
我尝试将@nonobjc
添加到方法中,因此不会向Swift公开。它适用于一个模型类,但不适用于所有模型类。当我将它添加到某些时,该方法甚至不再被调用。