2010-08-25 1 views
0

Я пишу приложение, где мы общаемся с веб-службой в json. Я хотел бы кэшировать данные из этой службы, так что пользователь всегда может отображать кэшированные данные, пока мы извлекаем обновленные данные.Как общаться с веб-сервисом в JSON и Core Data?

Я изучил небольшой проект; Основной ресурс, который является слоем поверх Core Data. Он преобразуется из JSON в объекты данных, и выглядит очень многообещающим. Поскольку этот проект не имеет большого сообщества или большой прогресс в дальнейшем развитии, я не уверен, что он разумно использовать для меня.

Кто-нибудь знает о подобном проекте? Или я должен сделать это самостоятельно с помощью только библиотеки JSON и Core Data?

ответ

0

Тривиально конвертировать JSON в Core Data и обратно. На самом деле я написал ответ здесь, в Stack Overflow, который проходит через это.

JSON and Core Data on the iPhone

Кроме этого, с помощью NSURLConnection, чтобы толкать и тянуть данные все, что вам действительно нужно. «Библиотека» для этого кажется излишней ненужной сложностью.

+0

Я поеду за этим решением, и я думаю, что вы правы. – Andi

+0

Я пробовал вашу реализацию, и я не согласен с тем, что нет необходимости в структуре/библиотеке для сопоставления между объектами JSON и Core Data. Возможно, я что-то не понял. Я проделал большую работу, чтобы ваша реализация соответствовала моим требованиям. В вашей реализации все равно, если объекты уже существуют и должны быть удалены, изменены или созданы. Я думаю, что я делаю много логики, которые можно было бы использовать в целом. Ваш код является хорошей отправной точкой, но далек от того, что мне нужно. – Andi

+0

Код, который я опубликовал в ответе в качестве примера, - это просто пример. Это не сокращение ваших конкретных потребностей. Это демонстрация способности KVC упростить рекурсивное преобразование между JSON и Core Data. Рамка/библиотека бесполезна, потому что ваши данные уникальны для вашего приложения, и общее решение почти наверняка будет чрезмерно сложным и/или неэффективным. Напишите свою собственную реализацию на основе примеров, и вы узнаете гораздо больше о языке. –

0

Идея может заключаться в использовании URL-кэша NSURLConnection обычной системы загрузки URL-адресов iPhone, которая поддерживает кеширование на уровне URL. Это будет работать особенно в контексте RESTFUL webservices. Вы можете использовать встроенный кеш API или реализовать свою стратегию кэширования. (см. here) Если вы не хотите сохранять свой кеш, вам не понадобится CoreData.

+0

Я хочу сохранить мои объекты, чтобы пользователь имел все предыдущие загруженные данные, доступные в автономном режиме. Я рассматривал GDataHTTPFetcher класса Google, который дает блестящую поддержку кеша памяти с поддержкой последнего изменения в заголовке HTTP. Я думал написать что-то подобное с дисковым кэшем для iPhone, но тогда мне нужно обработать мои данные, даже когда сервер вернет сообщение 304. Мне действительно понравился этот класс, но это не то, что я ищу. – Andi

+0

Правильный предлагаемый подход был просто предназначен для использования не в постоянном использовании. В этом случае CoreData - идеальный выбор. – Chris

Смежные вопросы