为什么我不能使用Swift的Objective-C NSArray?根据文档:Working with Cocoa Data Types Swift应该将NSArray<Type*>*
与[Type]
联系起来。
我在Objective-C中定义了这个对象:
@interface Data : NSObject
@property (strong, nonatomic, readonly) NSArray<NSNumber*>* arrayOfNumbers;
@end
Objective-C中定义的此方法:
@protocol DataReceiver
- (void)onDataReceived:(Data*)data;
@end
这在Swift中定义:
class MyDataReceiver : DataReceiver {
func onDataReceived(data: Data!) {
test(data.arrayOfNumbers[0]);
}
func test(num: Float) {
NSLog("%f", num);
}
}
我收到错误:'输入[NSNumber]!没有下标成员'。但是这个:
NSLog("%f", arrayOfNumbers[0]);
编译得很好......
这里发生了什么?
答案 0 :(得分:2)
错误消息没有意义,但这是因为您尝试将NSNumber
传递给接受Float
的方法。这意味着编译器正在尝试查找将返回Float
的下标方法,但显然它无法找到它。
func test(num: NSNumber) {
NSLog("%@", num);
}
应该解决问题。 Objective-C to Swift桥接按预期工作。