gpt4 book ai didi

ios - 从 Objective-C 调用 Swift 扩展函数的语法

转载 作者:可可西里 更新时间:2023-11-01 01:07:24 25 4
gpt4 key购买 nike

我有一个同时使用 objective-c 和 swift 的项目。一切都正确连接,所以我通常可以毫无问题地调用类的扩展。然而,在这种情况下,我必须将一个参数传递给扩展并且我被语法挂断了。

这是 Swift 3 扩展

extension Double {
/// Rounds the double to decimal places value
func rounded(toPlaces places:Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}

在 Swift 中你可以调用它

let x = Double(0.123456789).rounded(toPlaces: 4)

以下在 Objective-C 中不起作用:我试过它但无法获得正确的语法:

double test = 0.123456789;
double roundedtot = test.roundedToPlaces:2;

具体错误是

'Member reference base type 'double' is not a structure or union'

我收集到的是一个 c 错误,但由于您可以快速调用该函数,因此似乎应该有一种方法可以在 Objc-C 中调用它

最佳答案

您需要将 @objc 添加到扩展定义中以便从 Objective-C 调用它。

另外,需要注意的是,只有的扩展(不是结构或枚举)可以从 Objective-C 访问。

关于ios - 从 Objective-C 调用 Swift 扩展函数的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55478446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com