/ / Preradenie funkcie triedy Obj-c v Swift - objektív-c, rýchle

Preradenie funkcie triedy Obj-c v Swift - objektív-c, rýchle

Buď vidím nejaké zvláštne správanie od spoločnosti Swift, alebo robím niečo zlé.

Povedzme, že máte triedy obj-c s názvom TurtleHelper, ktorá vyzerá takto:

@interface TurtleHelper : NSObject

+(NSDictionary*)getTurtles;

@end

Potom chcem túto metódu prepísať v Swift, a tak to urobím:

class SwiftTurtles: TurtleHelper {

override class func getTurtles() -> NSDictionary {
...
}
}

Prekladač hodí na mňa nasledujúcu chybu:

Nadradená metóda s selektorom getTurtles má nekompatibilný typ "() -> NSDictionary"

Čo robím zle?

odpovede:

7 pre odpoveď č. 1

Ukázalo sa, že odpoveď sa zdá byť

override class func getTurtles() -> [NSObject : AnyObject]!

Z dokumentácie spoločnosti Apple:

Keď premostete z objektu NSDictionary na aSwift slovník, výsledný slovník je typu [NSObject: AnyObject]. Môžete prepojiť ľubovoľný objekt NSDictionary s slovníkom Swift, pretože všetky objekty Objective-C sú AnyObject kompatibilné.

referencie: https://developer.apple.com/library/prerelease/mac/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html