我看到Swift出現了一些奇怪的行爲,或者我做錯了什麼。重寫Swift中的Obj-c類函數
比方說,你有一個名爲TurtleHelper的OBJ-C類,這看起來是這樣的:
@interface TurtleHelper : NSObject
+(NSDictionary*)getTurtles;
@end
然後我想重寫斯威夫特這種方法,所以我這樣做:
class SwiftTurtles: TurtleHelper {
override class func getTurtles() -> NSDictionary {
...
}
}
的編譯器向我拋出以下錯誤:
使用選擇器getTurtles的重寫方法具有不兼容的類型'() - > NSDictio nary'
我在做什麼錯?
的類型可能是的NSDictionary?而不是NSDictionary,因爲原始的Objective-C方法可以返回nil,但是返回NSDictionary的Swift方法不能。 – gnasher729 2014-09-25 11:19:26
不,同樣的錯誤信息。 – henryeverett 2014-09-25 11:22:28
你有沒有嘗試過這樣的東西....重寫func getTurtles() - >(NSDictionary!){....}。如果你知道NSDictionary鍵/值類型,那麼嘗試使用override func getTurtles() - >([NSArray:AnyObject]!){.....}。在這種情況下,我使用字典鍵/值作爲NSArray/AnyObject。 – Suresh 2014-09-25 11:28:16