如何在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
但实际上它们是分开的东西。 NSMeasurement
是 class
而 Measurement
是 struct
。
如果它是相同的 class 那么它就是直接的实现。
例如:如果您在 Objective C
中创建 UITableView
的扩展,那么您可以直接在 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
但实际上它们是分开的东西。 NSMeasurement
是 class
而 Measurement
是 struct
。
如果它是相同的 class 那么它就是直接的实现。
例如:如果您在 Objective C
中创建 UITableView
的扩展,那么您可以直接在 Swift
.