为什么我的Swift类的扩展在定义文件之外不可见?

Ric*_*ong 21 visibility nsmanagedobject ios swift

我的CoreData模型有一个Xcode生成的NSManagedObject类.

@objc(SomeClass) class SomeClass : NSManagedObject { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

它在名为"SomeClass.swift"的文件中定义.我想扩展这个类,所以我创建了'SomeClassExtension.swift'.我像这样定义扩展:

extension SomeClass {
    class func typeMethod1() {}
    func instanceMethod2() {}
}
Run Code Online (Sandbox Code Playgroud)

这些扩展方法可以在此定义文件中使用,但它们在其外部不可见.是什么导致了这个问题?

Nat*_*ook 55

听起来你的新文件(SomeClassExtension.swift)没有包含在正确的目标中.通过在Xcode中选择文件,然后打开"文件检查器"("视图"菜单>"实用程序">"显示文件检查器"),仔细检查文件的目标成员资格.确保在Target Membership标题下检查正确的目标.

  • 我最终取消了目标并重新检查它.这为我解决了这个问题. (7认同)