2009-11-01 4 views
9

Я новичок в платформе iphone и создаю приложение, которое извлекает RSS-канал и отображает его в UITableView. Я получил эту работу отлично (точнее, так, как я хотел). Я думал, что я бы сохранил текущие элементы фида на телефоне, чтобы он начал загружать старые элементы, которые он сохранил, когда он получил новый фид, затем проанализируйте новый канал и добавьте новые элементы и обновите TableView. Я собирался использовать Core Data для хранения старых элементов фида, потому что это был бы хороший способ изучения Core Data, и это было бы подходящим использованием Core Data. Тем не менее, мне сложно учиться использовать Core Data и подключать его к таблице/массиву.Новые данные ядра для iphone

Я уже искал googled и смотрел на stackoverflow для учебных пособий, но еще не нашел ничего, что объясняет это так, как я действительно понимаю. Любое объяснение общих шагов, которые необходимо предпринять для добавления Core Data в существующее приложение, будет с благодарностью оценено. Полномасштабные детали не нужны (но также будут полезны). Я просто не очень разбираюсь в SQL или хранении данных таким образом, и у меня возникают проблемы, обертывая голову вокруг того, как работает вся концепция Core Data и как она соединяется со всем.

Также будет оценен любой лучший способ делать то, что я пытаюсь выполнить.

ответ

8

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

  • Добавить три основных объекта Core Data: контекст управляемого объекта (MOC), модель управляемого объекта (MOM) и постоянный координатор хранилища (PSC). Они должны быть доступны везде, где вы хотите получить основные данные, поэтому либо в своем делете делегата, либо, более предпочтительно, в контроллере или источнике данных для вашего представления в таблице.
  • Создайте MOM в Xcode. Это будет файл типа .xcdatamodel, и это графический объект, который определяет все объекты Core Data, которые вы хотите в своем приложении.
  • Используйте NSFetchedResultsController (как предложил Луи Гербарг), чтобы получить данные из Core Data и отобразить их в виде таблицы.
  • Добавить код в существующие процедуры RSS-выборки и разбора для хранения новых объектов Core Data обратно в хранилище, когда это необходимо.

Хороший способ начать - это просто создать новое приложение Core Data и немного поиграть с ним; вы также можете посмотреть фантастические ресурсы Apple по этому вопросу, например, Core Data Programming Guide и примеры приложений Recipes и Locations. (Возможно, потребуется регистрация разработчиков)

Следует отметить, что в большинстве случаев необходимо добавить код основного кода, который нужно добавить, прямо из одного из приложений шаблона Xcode и вставлен в вашей программы (это особенно актуально для аксессуаров для трех основных объектов Data Data). Однако будьте осторожны, чтобы не использовать код, который вы не понимаете.

3

Если вы используете CoreData для заполнения UITableView, вы действительно хотите использовать NSFetchedResultsController, а не пытаться заполнить и синхронизировать массив самостоятельно. Документация для NSFetchedResultsController включает ссылки на несколько обучающих программ CoreData, включая onces, которые заполняют представления таблиц.

1

NSFetchedResultsController все еще немного неисправен и требует хрупких обходных решений. Я начну с более простого руководства по размещению данных Core Core Core, прежде чем переходить к учебнику «Книги».

+0

Можете ли вы уточнить? Я помню несколько ошибок, имеющих довольно неприятные последствия в 3.0, но я уверен, что NSFetchedResultsController достаточно стабилен и применим в 3.1. Есть ли еще нерешенные проблемы, о которых я просто не знаю? – Tim

+0

При перемещении строк контроллер выборки ссылается на промежуточные индексы его внутреннего массива. Если указанные индексы больше не существуют, последующая перезагрузка разделов вызывает немедленный сбой. –

1

Кроме того, любой метод лучше делать то, что я пытаюсь достичь бы также оценить

да, это звучит как основные данные могут быть избыточны для вашего приложения. Предполагая, что ваши фидные элементы хранятся в объекте коллекции, вы можете легко использовать OSX built in serializaition.

0

Отмечено в других сообщениях Stack-Overflow, но я могу очень порекомендовать книгу Prag Prog «Основные данные: API-интерфейс Apple для сохранения данных в Mac OS X» - большинство также относится к приложениям iPhone Core Data; есть целая глава по созданию приложения для iPhone.

http://pragprog.com/titles/mzcd/core-data