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

用户名

我有一个既有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访问类的扩展而不是结构或枚举)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章