Если вам не нужно запрашивать различные оверлеи, и вы не используете основные данные в другом месте вашего проекта, то вам, вероятно, лучше кэшировать оверлей на диск как закодированный NSArray.
ОднакоЕсли вы уже используете Core Data или кэшируете несколько оверлеев, вы можете кодировать / декодировать оверлей в поле типа NSData.Добавьте дополнительные поля к объекту, чтобы можно было запрашивать конкретное наложение, которое вы ищете.
В iOS 5 вы можете включить дополнительное хранение полей NSData во внешнем файле, выбрав «Разрешить внешнее хранение»вариант.Базовые данные будут применять эвристику, основанную на размере, чтобы определить, приведет ли блоб или внешний файл к лучшей производительности.
MKOverlay соответствует NSCoding, поэтому вы можете кодировать и декодировать весь массив объектов MKOverlay, используя метод кодированияNSKeyedArchiver и сохраните результат в двоичном поле в вашей сущности.Скорее всего, вам понадобятся + (NSData *) archivedDataWithRootObject: (id) rootObject для NSKeyedArchiver и + (id) unarchiveObjectWithData: (NSData *) данные для NSKeyedUnarchiver
См. Раздел Архивы в руководстве по программированию архивов и сериализаций дляподробности о создании архива с ключами по адресу: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Archiving/Articles/archives.html
Вы можете написать собственный метод доступа для двоичного поля сущности, которое кодирует и декодирует оверлейный массив для вас.Другой вариант - создать преобразователь значения, который инкапсулирует операции кодирования и декодирования.Конечным результатом будет свойство массива оверлеев, которое вы можете установить и прочитать с помощью entity.overlays.