0

Twitterアプリがツイートを下書きに保存する方法や、パスアプリとInstagramのように、ASIFormDataRequest(つまり、画像、コメントなどを含む投稿)を保存するiOSアプリを開発しようとしています..

「ASIFormDataRequest *request」インスタンスを Core Data に直接保存することは可能ですか (これは私が知らないタイプです)

または、必要なフォームリクエストに応じて異なるエンティティを作成し、リクエストのデータを保存する必要がありますか? たとえば、

[request setPostValue:@"something"    forKey:@"method"];
[request addPostValue:object1         forKey:@"key1"];
[request addPostValue:object2         forKey:@"key2"];
[request addPostValue:anImageURLPath  forKey:@"key3"];

..そして、リクエストの投稿値の属性を使用して、上記のリクエストのエンティティを作成しますか?

4

1 に答える 1

1

おそらく、保持したい値のみを保存するのが最善です。値を格納するエンティティを作成する必要があります。

別のエンティティとの 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);
    }
}
于 2012-02-21T03:27:25.763 に答える