1

私のアプリがオフラインになっているときに、後でそのアプリがオンラインに戻ったときに再生するために、サーバーへの呼び出しを保存したいと思います。"呼び出し"テーブルを作成する:ブロックまたはNSOperationをシリアル化する?

ブロックやNSOperationsをシリアル化して(コアデータなどで)保存することができるのではないかと思いますか?

実はそれは簡単ではないようだ。

id block = [^{ 
     int i =0; 
    } copy]; 
NSData *myEncodedObjectToSave = [NSKeyedArchiver archivedDataWithRootObject:block]; 

これは認識されないセレクターを提起:

-[__NSGlobalBlock__ encodeWithCoder:]: unrecognized selector 

は、私は、このような「コール」テーブルを実装する方法任意のアイデアを持っていますか?

編集

私が探している何が、私は将来的に実行できること、NSOperation、またはブロックを持つテーブルを作成し、レール内delayed_jobようなものになるだろう。

答えて

2

NSOperationは、NSCodingプロトコルに準拠していません。だから私はその答えがそれのインスタンスをアーカイブするには 'いいえ'だと思う。ブロックと同じ答え、私は信じています。

つまり、この戦略を実装するために必要なデータをNSObjectから継承したクラスにラップしてシリアル化することはできますか?つまり、コードをシリアライズしないでください。むしろ、コードが必要とするデータを直列化します。しかし、これがコンテキストを知らなくても実行可能な解決策であるかどうかは分かりません。

+0

答えていただきありがとうございます。サーバーコール用のデータを保存することは、 "バックアップ"ソリューション(URL、パラメータなどを保存すること)です。私が探していたのは、私が他の言語で見たように、コールのコンテキスト全体を保存していたので、私は自分の答えを更新します。 – vdaubry

関連する問題