2017-02-13 93 views
0

現在NSMangededObject子類自動生成 我在哪裏放置通常放在子類文件中的代碼?swift 3.0 coreData子類

現在我缺少這個文件

public class IneedToDoStuffHere: NSManagedObject { 

} 

我剛剛創建自己的文件迅速做?

extension IneedToDoStuffHere{ 


} 

我對這個新的設置有點困惑。

+0

或者我應該只是將Codegen更改爲手動/無,並以舊的方式嗎? –

+0

如果使用其他文件,將會失去對符號的編譯時檢查。直到你運行這些錯誤出現。 –

回答

1

您可以編寫類中的代碼。創建實體後,當我們創建一個NSManagedObject類時,會生成兩個類。

  1. 的ClassName + CoreDataClass.swift

進口基金會 進口CoreData

@objc(ClassName) 
public class ClassName: NSManagedObject { 
    func add(){ 
     var obj = ClassName() 
     emp.username = "John" 
     emp.email = "[email protected]" 
     Employee.fetchRequest() 
    } 
} 
  • 的ClassName + CoreDataProperties.swift
  • 進口基金會 導入CoreData

    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文件,因爲它將屬性和類分開。

    謝謝

    +0

    好吧,這是我以前做的,但我的問題是,現在的coredata改變了,我仍然做同樣的事情,或只是寫一個擴展到自動生成的子類 –

    +0

    是的,這也將正常工作。但是,如果你有更多的特性/屬性,那麼你可以分出不同的課。 – Arun

    +0

    @EricYu,CoreData現在將可重寫的代碼從常量中分離出來。具有'extension'和'@ NSManaged'屬性的文件'+ CoreDataProperties'用於自動生成的CoreData代碼。而'+ CoreDataClass'則是針對你的個人代碼。 – user28434