1

iPhone 用のアプリケーションを開発しているときに、テキスト属性の永続化に関する問題に遭遇しました。次の構造を使用しています。

データコア モデル:
レポートには複数のアイテム
があります アイテムには属性 'text' と 'position'
があります アイテムは TextItem と TitleItem のスーパークラスです
どちらにもより具体的な属性があります (これらの属性は正しく保存されます)

モデル:
TextItem と TitleItem の Item スーパーがあり、DataCore モデルから生成されます。

ViewControllers:
ItemViewController は TitleItemViewController と TextItemViewController のスーパーです

ビュー:
TitleItemView と TextItemView は ItemView のサブクラスです

次のコードを使用して、textItem を保存しています (TextItemViewController の ViewWillDisappear メソッド内)。

[MagicalRecord saveUsingCurrentThreadContextWithBlock:^(NSManagedObjectContext *localContext) {
TextItem *ti = [self.textItem MR_inContext:localContext];
    NSString *newText = [self getText];
    ti.text = newText;
} completion:^(BOOL success, NSError *error) {
    if (!success) {
        NSLog(@"Could not save");
    }
}];

これは保存されません。オブジェクトをログに記録したにもかかわらず、変更はなく、テキスト属性が変更されるというメッセージが表示されます。奇妙なことは、テキストがどこかに保存されていることです (メッセージにそうではないと書かれていても)。アプリを使用でき、正しいテキストが保持されます。アプリケーションを再実行したときにのみ、テキストがデフォルト値にリセットされます (デフォルト テキストで textItem を作成しますが、ロード時に、ロードされたモデルからテキストを読み取ります)。

他の値は正しく保存されているため、問題は継承にあると考えられますが、テキスト属性はすべてのアイテム タイプ オブジェクトに使用される属性です。

4

0 に答える 0