如何在Swift中使用Objective-C NSMeasurement类别方法?

时间:2018-01-22 15:17:13

标签: objective-c swift foundation

假设我们项目中的NSMeasurement有一个类别。

.h文件(.m文件也存在):

NSMeasurement+Test.h

@interface NSMeasurement (Test)

- (NSString *)foo;

@end

现在让我们进一步假设我们有一个Swift类,我们想要使用类别方法foo。这里的问题是NSMeasurement将被“转换”为Swift中的Measuement类。 是的,类别标题已插入到Brinding头文件中。

问题是:我如何访问NSMeasurement func“foo”,尽管它已经“突变”为swift中的Measurement类

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您必须使用NSMeasurement,或者您可以将投注Measurement输入NSMeasurement

let measurement = Measurement(value: 20, unit: Unit(symbol: "kg")) as NSMeasurement
let value = measurement.foo()
print(value)

根据Documentation NSMeasurement可以桥接到Measurement,但事实上它们是分开的。 NSMeasurementclass,而Measurementstruct

如果它是同一个类,则它是直接实现。 例如:如果您在UITableView中创建Objective C的扩展名,则可以直接在Swift中访问扩展程序。