おそらく、保持したい値のみを保存するのが最善です。値を格納するエンティティを作成する必要があります。
別のエンティティとの 1 対多の関係を持つ任意のフォーム値に対して 1 つのエンティティを持つことができます。これは、所有している投稿値の単純なキーと値のペアです。
このチュートリアルは、基本的な CoreData を学習するために使用したものです。エンティティを作成し、エンティティ間の関係を作成する方法について説明します
編集:コメントでの質問への回答:
「投稿」を表すモデル(データクラス/エンティティ、またはそれらを呼び出すもの)があると思います。私はあなたのコードを見たことがなく、どのように書いたのかわかりませんが、これが私がそれを実装する方法です.
1) ユーザーからデータを取得するフォームを用意します。(およびこのフォームを表すモデル)
2) ユーザーが [送信] をクリックすると、そのデータが (モデルとして) ネットワーク サービスに渡され、ネットワーク サービスはそれを FormDataRequest に変換して送信を試みます。
3) The Network が失敗した場合 (またはユーザーが [Save Draft] をクリックした場合)、モデルはデータ サービスに送信され、モデルが CoreData に保存されます。(CoreData エンティティを作成します-モデルと同じではないにしても類似している必要があります-値をコピーし、エンティティを保存します)
(半分)疑似コードとして:P
class MyFormViewController{
// Obviously declared in the header file ;)
TextField name;
TextField dob;
...
// View Stuff dealing with displaying the form
...
function getModelForFieldValues() {
Model m;
m.name = name.Text;
m.dob = dob.Text;
return m;
}
function send_buttonPress() {
Model myModel = getModelForFieldValues();
BOOL success = NetworkService.send(myModel); //Attempts to send the data over the network
if(!success) {
DataService.save(myModel); //Saves the model data to CoreData
}
}
function saveDraft_buttonPress() {
Model myModel = getModelForFieldValues();
DataService.save(myModel);
}
}