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

How to use Objective-C NSMeasurement category methods in Swift?

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

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

NSMeasurement+Test.h

@interface NSMeasurement (Test)

- (NSString *)foo;

@end

现在让我们进一步假设我们有一个 Swift class,我们要在其中使用类别方法 foo。这里的问题是 NSMeasurement 将 "transformed" 变成 Swift 中的 Measuement class。 是的,类别 header 已插入到 Brinding header 文件中。

问题是:我如何访问 NSMeasurement 函数 "foo",尽管它已 "mutated" 到 swift

中的测量 class

如有任何帮助,我们将不胜感激。

您要么必须使用 NSMeasurement,要么可以将 cast Measurement 键入 NSMeasurement

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

根据 Documentation NSMeasurement 可以桥接到 Measurement 但实际上它们是分开的东西。 NSMeasurementclassMeasurementstruct

如果它是相同的 class 那么它就是直接的实现。 例如:如果您在 Objective C 中创建 UITableView 的扩展,那么您可以直接在 Swift.

中访问它的扩展方法