爲什麼我無法使用Swift的Objective-C NSArray?根據文件:Working with Cocoa Data Types斯威夫特應該橋接NSArray<Type*>*
到[Type]
。無法從Swift訪問橋接的NSArray
我有在Objective-C所定義的本對象:
@interface Data : NSObject
@property (strong, nonatomic, readonly) NSArray<NSNumber*>* arrayOfNumbers;
@end
此方法在Objective-C定義爲:
@protocol DataReceiver
- (void)onDataReceived:(Data*)data;
@end
而在夫特此定義:
class MyDataReceiver : DataReceiver {
func onDataReceived(data: Data!) {
test(data.arrayOfNumbers[0]);
}
func test(num: Float) {
NSLog("%f", num);
}
}
而我收到錯誤:輸入[NSNumber]!沒有下標成員「。但這:
NSLog("%f", arrayOfNumbers[0]);
編譯就好了....
這裏發生了什麼?
這是行不通的? 'NSLog(「%@」,data.arrayOfNumbers [0])' – kennytm
@kennytm奇怪的是,它使用這種方法進行編譯,但是當我立即嘗試將它傳遞給像這樣的函數時不起作用:'func test num:Float){NSLog(「%f」,num); } test(data.arrayOfNumbers [0])'(給出相同的錯誤) – UnTraDe
你真的需要'Data'作爲可選項嗎? – vadian