当使用Xcode 7.3和Swift 2.2构建时,我遇到了“init使用不明确”的错误。
问题与两个Objective-C类及其初始化方法在Swift中的视图有关。
Objective-C看到的是:
超类
@interface Foo: NSManagedObject
+(instancetype)fooWithOwner:(Owner *)owner insertIntoManagedObjectContext:(NSManagedObjectContext *)context;
子类
@interface Bar: Foo
+(instancetype)barWithOwner:(Owner *)owner insertIntoManagedObjectContext:(NSManagedObjectContext *)context;
当 Swift 只看到:
init(owner: Owner!, insertIntoManagedObjectContext context: NSManagedObjectContext!)
这导致编译器无法确定子类"Bar"调用哪个init方法。是否有一种方法在初始化子类时指定要使用的初始化程序?如果可能的话,我想避免重构init方法。
makeFooWithOwner...
和makeBarWithOwner...
或类似的名称,这样它就不会将它们转换为初始化器。 - dan