Шаблон разработки для Базового приложения для iPhone Данных

Если бы вам пришлось, вы могли бы бросить свой собственный .. используя FIFO с одним писателем / одним читателем или очередями.

9
задан RickiG 24 October 2009 в 16:54
поделиться

2 ответа

Core Data не так сложно, как вы описываете.

Как правило, приложение iPhone имеет «главный» контекст управляемого объекта, который обычно принадлежит делегату приложения. Пока вы можете получить делегат приложения (подсказка: [[UIApplication sharedApplication] делегат] ), у вас есть доступ к контексту управляемого объекта. Мне нравится определять статическую глобальную переменную для хранения ссылки на делегата моего приложения, чтобы упростить жизнь.

Обычно существует однозначное соответствие между экземплярами NSFetchedResultsController и UITableView экземпляры. Помимо заполнения представлений таблиц, это В очень редких случаях вам может понадобиться NSFetchedResultsController . Если у вас есть несколько похожих представлений (например, панель вкладок, которая позволяет просматривать одни и те же данные по-разному, как в приложении iPod), вам следует создать единственный базовый класс, который настраивает NSFetchedResultsController и извлеките из него свои конкретные контроллеры представления.

Теперь, когда вы создаете контроллеры представления для редактирования объекта, обычно рекомендуется делать это в отдельном контексте управляемого объекта. Если пользователь отменяет, вы просто отбрасываете контекст, и изменения исчезают. Опять же, вам действительно не нужен NSFetchedResultsController для этого, потому что эти представления связаны только с одним объектом.

Когда вы закончите редактирование, вы сохраните: управляемый контекст объекта. Объекты, которые управляют контекстами других управляемых объектов, должны реализовывать методы NSFetchedResultsControllerDelegate , чтобы синхронизировать представление таблицы. Опять же, это может быть реализовано в базовом классе, чтобы вы могли обобщить эту функциональность для связанных контроллеров представления.

19
ответ дан 4 December 2019 в 11:06
поделиться

Вы обязательно должны использовать модель CoreData, или что-то, использующее NSCoder (NSArchiver, NSKeyedArchiver, и т. Д.), Будет работать? Я обнаружил, что CoreData является излишним для большинства приложений.

Кроме того, не могли бы вы пояснить, почему вы не можете использовать подход, использующий синглтоны? Я без проблем использовал одноэлементные фабрики в ряде приложений. Довольно легко определить методы уровня класса, которые работают с совместно используемым (одноэлементным) экземпляром.

0
ответ дан 4 December 2019 в 11:06
поделиться