Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Ios 如何调用swift方法,该方法的参数是来自目标C的协议_Ios_Objective C_Swift - Fatal编程技术网

Ios 如何调用swift方法,该方法的参数是来自目标C的协议

Ios 如何调用swift方法,该方法的参数是来自目标C的协议,ios,objective-c,swift,Ios,Objective C,Swift,如何调用swift方法,该方法的参数是来自目标C的协议 Class A { func sendMessage<Serializable: Encodable>(message:Serializable){ let jsonData = try! JSONEncoder().encode(message) } } 如何从Objective C调用此方法。我认为发送消息永远不会出现在已编译的TargetName Swift.h中,因为在Objective-

如何调用swift方法,该方法的参数是来自目标C的协议

Class A
{
func sendMessage<Serializable: Encodable>(message:Serializable){
        let jsonData =   try! JSONEncoder().encode(message)

    }
}

如何从Objective C调用此方法。

我认为
发送消息
永远不会出现在已编译的
TargetName Swift.h
中,因为在
Objective-C
中没有泛型和
可编码的
协议

Class A
{
func sendMessage<Serializable: Encodable>(message:Serializable){
        let jsonData =   try! JSONEncoder().encode(message)

    }
}
当你使用

sendMessage(消息:可序列化)

您使用泛型以及
可编码
协议,该协议仅在Swift中可用,在Objective-C中不可用

当您尝试访问
Objective-C
文件中的
Swift
函数时,编译器会创建一个
Objective-C
函数的等价/对应项,因此您可以在
TargetName Swift.h
文件中看到这些方法的签名


但是
Generics
Encodable
协议在
Objective-C
中不可用,因此它无法使用
Generics
Encodable
协议将Swift函数转换为Objective-C等效函数。因此,您永远不能从Objective-C文件中调用此类Swift方法

您是否导入了
TargetName Swift.h
我已经导入了它,并且我能够调用其他仅以字符串作为参数的方法。您是否尝试在func声明前面添加@objc?如“Objc Func sEdMeNeMe……”Saththh:如果你认为它澄清了你的问题,请考虑接受这个答案。doubt@santhosh:谢谢:)