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

Я пытаюсь разработать приложение для 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 Ответ

1 голос
/ 21 февраля 2012

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

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

этот учебник , который я использовал для изучения базовых 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);
    }
}
...