当我的应用离线时,我想将一些电话存储到服务器,以便稍后在应用重新上线时重播它们。
我想知道是否可以序列化块或NSOperations来保存它们(例如核心数据)?
实际上似乎并不简单:
id block = [^{
int i =0;
} copy];
NSData *myEncodedObjectToSave = [NSKeyedArchiver archivedDataWithRootObject:block];
这引发了一个无法识别的选择器:
-[__NSGlobalBlock__ encodeWithCoder:]: unrecognized selector
你知道如何实现这样一个“呼叫”表吗?
修改:
我正在寻找的东西就像rails中的delayed_job,创建一个带有NSOperation的表,或者块,我可以在将来的某个时间执行。
答案 0 :(得分:2)
NSOperation
不符合NSCoding
协议;所以我认为答案是“不”归档它的实例。我相信,块的答案也是一样的。
那就是说,你可以将实现这个策略所需的数据包装到一个继承自NSObject
的类中,然后序列化吗?换句话说,不要尝试序列化代码;相反,序列化代码所需的数据。但是,如果不了解背景,很难知道这是否是一个可行的解决方案。