2017-02-13 17 views
0

NSMangededObjectサブクラスが自動的に生成されました 通常はサブクラスファイルに入れたコードをどこに置くのですか?swift 3.0 coreDataサブクラス

今私は、このファイル

public class IneedToDoStuffHere: NSManagedObject { 

} 

をしないのです、私はちょうど私の自身の迅速なファイルを作成して行うのですか?

extension IneedToDoStuffHere{ 


} 

私はこの新しい設定についてちょっと混乱しています。

+0

または私はCodegenをManual/Noneに変更して旧式にする必要がありますか? –

+0

別のファイルを使用すると、シンボルのコンパイル時間チェックが失われます。あなたがこれらのエラーを実行するまで表示されます。 –

答えて

1

クラスのコードを記述することができます。エンティティを作成した後、NSManagedObjectクラスを作成すると、2つのクラスが生成されます。

  1. クラス名+ CoreDataClass.swift

インポート財団 インポートCoreData

@objc(ClassName) 
public class ClassName: NSManagedObject { 
    func add(){ 
     var obj = ClassName() 
     emp.username = "John" 
     emp.email = "[email protected]" 
     Employee.fetchRequest() 
    } 
} 
  • クラス名+ 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はリライタブルコードを定数から分離します。ファイル '+ CoreDataProperties'は' extension'と '@ NSManaged'プロパティで、自動生成されたCoreDataコード用です。 + + CoreDataClassはあなたの個人的なコードです。 – user28434

    関連する問題