Следуя рекомендациям Руководства по программированию базовых данных, производительность базовых данных страница
что касается хранения больших двоичных объектов, я решил хранить двоичные данные для своих
NSPersistenDocument-based
приложение (только для леопарда, если это
разница) во внешнем файле (отдельно от документа Core Data
хранилище данных) и сохраняя в архиве NDAlias
ссылку на этот файл в
хранилище данных моего документа.
В конечном счете, я хотел бы получить внешние данные
файл должен оказаться в том же каталоге, что и документ (хранилище данных)
файл. Так как мне может понадобиться записать данные во внешний файл данных, прежде чем
документ сохранен (это приложение для сбора научных данных и
следует избегать потери данных из-за сбоя, если это возможно), я взял
следующий подход:
Я бы хотел инкапсулировать управление этим внешним файлом в
классы, связанные с моделью, так как мне потребуется та же функциональность
во время миграции схемы. Таким образом, управление файлом внешних данных в моем
NSPersistentDocument's
подкласс кажется неправильным.
На объекте
корневой объект модели, я создаю внешний файл в
NSTemporaryDirectory()
в корневых объектах awakeFromInsert
и сохраните NDAlias
со ссылкой на файл данных.
Затем я хотел бы переместить файл внешних данных в тот же каталог, в котором находится сохраненное хранилище данных, когда происходит сохранение.
Я думал, что didSave
будет подходящим местом
чтобы сделать это, но похоже на то, что во время вызова метода didSave
,
постоянное хранилище все еще находится во временном каталоге (предположительно
до FSExchangeObjects'd
для создания атомарной операции сохранения).
Я планирую разделить логику в awakeFromInsert
и didSave
на класс
методы, чтобы они могли быть вызваны во время миграции схемы в пользовательском
политика организации
createDestinationInstancesForSourceInstance:entityMapping:manager:error:
and endInstanceCreationForEntityMapping:manager:error:
соответственно.
Итак, мой вопрос: когда во время NSPersistentDocument
сохранения я могу быть уверен, что objectID.persistentStore.URL
моего корневого объекта является «окончательным» URL сохранения (например, где пользователь решил сохранить файл для сохранения документа)?