Сохранить POST-запрос к основным данным, когда нет подключения к Интернету

Я пытаюсь разработать приложение для iOS, которое сохраняет запрос ASIFormDataRequest (т.е. публикацию с изображениями, комментариями и т. Д.), Например, как приложение Twitter сохраняет твит в своих черновиках, а также приложение Path и Instagram.

можно будет просто сохранить экземпляр "ASIFormDataRequest *request" непосредственно в Core Data (к типу, который я не знаю)

или я должен создать разные объекты в зависимости от формы запроса, который я хочу, и сохранить данные запроса? Как например,

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

..и Создать объект для вышеупомянутого запроса с атрибутами почтовых значений запроса?

1 ответ

Решение

Вероятно, лучше всего сохранять только те значения, которые вы хотите сохранить. Вы должны создать сущности для хранения ваших ценностей.

Вы можете иметь один объект для любых значений формы с отношением один ко многим к другому объекту, который представляет собой простую пару ключ / значение для имеющихся у вас значений записей.

этот урок я использовал для изучения базовых CoreData. Он проведет вас через создание сущностей и установление отношений между ними

РЕДАКТИРОВАТЬ: В ответ на ваш вопрос в комментариях:

Я бы предположил, что у вас есть модели (классы данных / сущности или как вы их называете) для представления "поста". Я не видел ваш код, и я не уверен, как вы его написали, но так я бы его реализовал.

1) Иметь форму, которая получает данные от пользователя. (и модель, представляющую эту форму)

2) Пользователь нажимает кнопку "Отправить", которая передает эти данные (в качестве модели) в сетевую службу, которая преобразует их в FormDataRequest и пытается отправить.

3) Если происходит сбой в сети (или пользователь просто нажимает "Сохранить черновик"), модель затем отправляется в службу данных, которая сохраняет модель в 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);
    }
}
Другие вопросы по тегам