如何使Core Data生成的代码使用内部访问器? Swift 4,Xcode 9.2

时间:2018-03-27 15:44:55

标签: core-data nsmanagedobject access-modifiers codegen

我想知道是否有办法阻止核心数据从核心数据模型实体生成公共类。

目前它会生成如下类:

import Foundation
import CoreData


public class MyEntityMO: NSManagedObject {

}

extension MyEntityMO {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<RecordSettingMO> {
        return NSFetchRequest<RecordSettingMO>(entityName: "RecordSettingMO")
    }

    @NSManaged public var someBoolean: Bool
}

但我希望它像这样(使用内部访问修饰符):

import Foundation
import CoreData


internal class MyEntityMO: NSManagedObject {

}

extension MyEntityMO {

    @nonobjc internal class func fetchRequest() -> NSFetchRequest<RecordSettingMO> {
        return NSFetchRequest<RecordSettingMO>(entityName: "RecordSettingMO")
    }

    @NSManaged internal var someBoolean: Bool
}

1 个答案:

答案 0 :(得分:1)

Xcode没有提供任何方法来进行此更改。要使用internal,您需要关闭自动子类生成并创建自己的子类。

您可以使用问题中的代码。获取当前代码,保存副本并关闭自动生成。然后编辑您的副本。但是您也必须自己进行所有未来的编辑,因此如果您将来更改模型,请确保也编辑您的子类。