Когда хранилище данных NSPersistentDocument перемещается в конечное место сохранения? - PullRequest
5 голосов
/ 16 января 2009

Следуя рекомендациям Руководства по программированию базовых данных, производительность базовых данных страница что касается хранения больших двоичных объектов, я решил хранить двоичные данные для своих 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 сохранения (например, где пользователь решил сохранить файл для сохранения документа)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...