0

コアデータについては、インターネット上で多くのチュートリアルと記事を見つけましたが、リアルタイムで初心者にとってより便利なサンプルアプリを作成しています。サンプル コードはこちらにあります。

コアデータ構造コアデータ構造はこのようなものです。

アーティスト、アルバム、曲にエントリーします。しかし問題は、すでに追加されているアーティストに対して後で行った編集がアルバムに反映されないことです。

そうするために何が欠けていますか?

この問題を再現するには、プロジェクトをダウンロードして実行するように依頼します。

  • アーティスト、アルバム、曲にエントリを作成します。
  • その後、[アーティスト] タブに移動し、アーティスト エントリの一部を編集します。
  • [アルバム] タブに移動します。関連するアルバム エントリの古いアーティスト名と同じアーティスト名が表示されます。

これが問題です。理想的には、そこに新しいエントリが表示されるはずです。

これを達成するための本物の方法が欲しい

4

1 に答える 1

1

[ジャンル] ボタンをクリックするまで [アルバム] タブにアーティスト名が表示されず、アーティスト名が正しく表示されるため、問題を再現するための指示がわかりません。エラーが表示された場所は、[曲] タブに移動するときでした。

何が起こっているのかを簡単に見てみると、この問題は、参照されているアーティスト エンティティからアーティスト名を取得するのではなく、songArtist という曲に保存されている NSString によってアーティスト名を表示しているためだと思います。

artist.artistName を変更しただけでは、CoreData は song.artistName NSString を更新しません。これらの 2 つの文字列が関連していることはわかりません。その更新は自分で行う必要があります。

または、Song エンティティからの情報を更新して、Song の artistName の新しい変数を設定する必要があります。

それが理にかなっていることを願っています。

/* アップデート */

あなたの曲はアーティストを参照していますが、対多の関係です。ソングにはアーティストが 1 人しかいないといつも思っていたので、CoreData リレーションシップで対多リレーションシップのチェックを外します。その場合は、song.artist.artistName でアーティスト名を表示する必要があります。次に、アーティスト エンティティが更新されると、曲は正しい情報を持つアーティストを参照します。

于 2013-03-15T09:02:19.967 に答える