繁体   English   中英

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

[英]Syntax to Call Swift Extension Function from Objective-C

我有一个同时使用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;

具体错误是

'成员引用基类型'double'不是结构或联合'

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM