Ich bin eine „mehrdeutige Verwendung von init“ Fehlern bekommen, wenn Objective-C-Klassen auf zwei mit Xcode 7.3 und Swift 2.2mehrdeutige Verwendung von init in Swift 2.2
Das Problem im Zusammenhang Aufbau ist und wie Swift sieht ihren initializers .
ObjC sieht:
Superklasse
@interface Foo: NSManagedObject
+(instancetype)fooWithOwner:(Owner *)owner insertIntoManagedObjectContext:(NSManagedObjectContext *)context;
Subclass
@interface Bar: Foo
+(instancetype)barWithOwner:(Owner *)owner insertIntoManagedObjectContext:(NSManagedObjectContext *)context;
während Swift sieht nur:
init(owner: Owner!, insertIntoManagedObjectContext context: NSManagedObjectContext!)
was dazu führt, dass der Compiler unsicher ist, welcher Init für die Unterklasse "Bar" aufgerufen wird. Gibt es eine Möglichkeit anzugeben, welcher Initialisierer beim Initialisieren der Unterklasse verwendet werden soll? Ich möchte vermeiden, die Init-Methode wenn möglich zu refaktorieren.
Sie benennen können 'makeFooWithOwner ...' und '' makeBarWithOwner ... oder etwas ähnliches und es wird sie nicht konvertieren zu Initialisierer – dan
Können Sie den Swift-Code posten, mit dem Sie das Problem haben? Ich kopiere/klebte in ein neues Projekt und hatte keine Probleme beim Kompilieren. – Kevin
Es gibt keinen Grund, warum die ursprünglichen Obj-C-Methoden in erster Linie andere Namen haben sollten. – Sulthan