【问题标题】:swift 3.0 coreData Subclassswift 3.0 coreData 子类
【发布时间】:2023-03-25 23:40:01
【问题描述】:

现在自动生成 NSMagededObject 子类 我通常放在子类文件中的代码应该放在哪里?

现在我错过了这个文件

public class IneedToDoStuffHere: NSManagedObject {

 }

我是否只是创建自己的 swift 文件然后执行?

 extension IneedToDoStuffHere{


 }

我对这个新设置有点困惑。

【问题讨论】:

  • 或者我应该将 Codegen 更改为 Manual/None 并按照旧方式进行操作?
  • 如果您使用其他文件,您将失去符号的编译时检查。直到你运行这些错误才会出现。

标签: swift xcode core-data swift3


【解决方案1】:

您可以在类中编写代码。创建一个Entity之后,当我们创建一个NSManagedObject类的时候,会生成两个类。

  1. 类名+CoreDataClass.swift

导入基础 导入核心数据

@objc(ClassName)
public class ClassName: NSManagedObject {
    func add(){
        var obj = ClassName()
        emp.username = "John"
        emp.email = "john@example.com"
        Employee.fetchRequest()
    }
}
  1. 类名+CoreDataProperties.swift

导入基础 导入核心数据

extension ClassName{

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

    public var username: String?
    public var email: String?   
}

您可以在任何类中编写代码。因为你的另一个类是一个扩展,所以在 ClassName+CoreDataProperties.swift 中编写的代码将起作用。

但是,您应该将代码写在 ClassName+CoreDataClass.swift 文件中,因为它将属性和类分开。

谢谢

【讨论】:

  • 嗯,这是我以前做的,但我现在的问题是核心数据已经改变,我仍然做同样的事情还是只是为自动生成的子类编写扩展
  • 是的,它也可以正常工作。但是如果你有更多的属性/属性,那么你可以用不同的类分开。
  • @EricYu,CoreData 现在为您将可重写代码与常量分开。带有extension@NSManaged 属性的文件+CoreDataProperties 用于自动生成的CoreData 代码。 +CoreDataClass 是您的个人代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 2014-08-11
相关资源
最近更新 更多