1

Когда мое приложение отключено, я хотел бы сохранить вызов на сервер, чтобы воспроизвести его позже, когда приложение снова появится в сети.Создать таблицу «вызов»: сериализовать блок или NSOperation?

Мне интересно, можно ли сериализовать блоки или NSOperations для их сохранения (например, с основными данными)?

На самом деле, кажется, что это не так просто:

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

Это поднимает непризнанный селектор:

-[__NSGlobalBlock__ encodeWithCoder:]: unrecognized selector 

Есть ли у вас какие-либо идеи, как я мог бы осуществить такой «вызов» таблицы?

Edit:

Что я ищу будет что-то вроде delayed_job в рельсах, создавая таблицу с NSOperation, или блоки, которые я могу выполнить когда-то в будущем.

ответ

2

NSOperation не соответствует протоколу NSCoding; поэтому я думаю, что ответ «нет» для архивирования его экземпляров. По-моему, тот же ответ для блоков.

Сказали, не могли бы вы обернуть данные, необходимые для реализации этой стратегии, в класс, который наследует от NSObject, а затем сериализуем это? Другими словами, не пытайтесь сериализовать код; скорее, сериализуйте данные, требуемые кодом. Трудно понять, является ли это жизнеспособным решением, не зная контекста.

+0

Спасибо за ваш ответ, сохранение данных для вызова сервера - это «резервное» решение (сохранение URL-адреса, параметров и т. Д.). То, что я искал, это сохранение всего контекста вызова, как я видел на другом языке, я обновлю свой ответ. – vdaubry