2017-01-05 10 views
0

私のコアデータが変更を保存しない理由を知りました。実際、上記のコードは数時間前に働いていました。エラーを印刷しようとすると、(null)が印刷されます。以下のコードは、NSManagedObjectSubclassのためのカスタムメソッドです:MagicalRecordが保存されない

-(void)bindWithModel:(MenuAPIModel*)model{ 

    self.basketId = [model.basketId integerValue]; 
    self.coreId = [model.itemId integerValue]; 
    self.name = [model name]; 
    self.orderId = [model.orderId integerValue]; 
    self.payedFrom = [model payedFrom]; 
    self.persons = [model persons]; 
    self.price = [model.price integerValue]; 
    self.price3 = [model.price3 integerValue]; 
    self.price12 = [model.price12 integerValue]; 
    self.status = [model status]; 

    [[NSManagedObjectContext MR_defaultContext] MR_saveOnlySelfWithCompletion:^(BOOL contextDidSave, NSError * _Nullable error) { 

    NSLog(@"error %@", error.localizedDescription); 

}]; 

エラーがnullで、contextDidSaveはYESです。しかし、エンティティにアクセスしようとすると、nullが出力され、SQLテーブルは空になります。どうして?

答えて

1

bindWithModelの方法がNSManagedObjectサブクラスにあると仮定します。もしそうなら、あなたはMR_defaultContextいうし、このクラスからmanagedObjectContextプロパティを使用する必要があります。

[self.managedObjectContext MR_saveOnlySelfWithCompletion:^(BOOL contextDidSave, NSError * _Nullable error) { (...) }]; 

以前は、おそらく働いていた[NSManagedObjectContext MR_defaultContext]からのコンテキストがself.managedObjectContextと同じだったので。

+0

ありがとうございましたが、実際に保存してデータが存在しました。問題は - データがどこに格納されているのかわかりません。サンドボックス内のデータベースファイルが空です –

+0

サンドボックス内のデータベースファイルが空の場合、データが保存されなかったことを意味します。そのデータが保存されたことをどのように確認しますか?おそらく、このデータが存在することを確認するために、他の場所で 'MR_defaultContext'(または何らかの新しいコンテキスト)を使ってこれらのデータを取得しようとします。 – Mateusz

+0

私はコンソールにデータを記録することでそれを検証することができます。正しいのは –

関連する問題