1

當我的應用程序處於脫機狀態時,我想將一些調用存儲到服務器,以便稍後在應用程序返回聯機時重播它們。創建一個「調用」表:序列化一個塊或NSOperation?

我想知道是否可以序列化塊或NSOperations來保存它們(例如核心數據)?

實際上它似乎並不簡單:

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

這就提出了一個無法識別的選擇:

-[__NSGlobalBlock__ encodeWithCoder:]: unrecognized selector 

你有什麼想法,我怎麼能實現這樣的「呼叫」表?

編輯

什麼我要找的會是這樣的在軌的delayed_job,用的NSOperation,或塊創建一個表,說我可以在將來的某個時候執行。

回答

2

NSOperation不符合NSCoding協議;所以我認爲答案是「否」歸檔它的實例。我相信,對於街區來說,同樣的答案。

也就是說,你可以將實現這個策略所需的數據包裝到繼承自NSObject的類中,然後序列化它嗎?換句話說,不要嘗試序列化代碼;而是序列化代碼所需的數據。儘管如此,很難知道這是否是一種可行的解決方案。

+0

感謝您的回答,保存服務器調用的數據是「備份」解決方案(保存網址,參數等)。我一直在尋找的是保存通話的整個環境,因爲我已經看到其他語言,我會更新我的答案。 – vdaubry

相關問題