2016-12-27 12 views
1

お手伝いをしてください。すぐに複数の関係に参加する

私は3 NSManagedオブジェクトを持っています。

Employeeが複数Payslipsを持つことができ、各Payslipが複数PayItemsを持つことができ、従業員、給与明細、PayItem

を言います。

so the relationship is Employee <->> Payslip <<- PayItem

これらはすべてNSManagedOjectsとして設定されています。

その後、私はそれぞれの3つのインスタンスを持って言うことができます:(NSManagedObjectクラスにこれを追加することによって、私はそれぞれを初期化しています想像:。

convenience init(context: NSManagedObjectContext) 
    { 
    let entity = NSEntityDescription.entity(forEntityName: <entity>, in: context)! 
    self.init(entity: entity, insertInto: context)' 
    } 

その後、私は宣言することができ

var employee = Employee(context: context) 
     var payslip = Payslip(context: context) 
     var payItem = PayItem(context: context) 

私がすることができますその後:

employee.addToPayslip(payslip) //Using the function created for me by default. 

しかし、私はしようとした場合:

payslip.payItem = payItem 

私は常にエラーを取得:

Failed to call designated initializer on NSManagedObject class 'PayItem'

を要約すると、私はpayitemへの給与明細、その後、それは多くの1つである、給与明細に従業員をリンクしようとしている、それは多くの1つです。なぜ私はそのような厳しい時間を過ごしていますか?

+0

私の知識では、Employee、PaySlip、Payitemの3つのクラスを作成します。 Employeeクラスでは、paySlipプロパティの配列を作成します。 Payslipクラスでは、payItemプロパティの配列を作成します。ちょうどモデル。私はNSManagedObjectを使用しませんでした。 –

+0

提案していただきありがとうございます。私は本当にクラスの配列を使用することができます。しかし、この例では。私は具体的にコアデータとNSManagedObjectsを使用したい – LateNate

+0

コードは正常に見えます。私はあなたのモデルに何か怪しいものがあると思う。 – shallowThought

答えて

0

それで、私はPayItemの初期化されていないバージョンを返す関数があることが判明しました。追跡に時間がかかりましたが、これをザッピングして私の問題を解決しました。

関連する問題