2012-06-29 1 views
0

У меня есть приложение OS X, которое опирается на NSPsistentDocument и Core Data для обработки настраиваемого типа файла приложения (который сохраняется как XML).Изменения файла на диске при открытии приложения с обновленной моделью Core Data

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

Чтобы быть ясным: я просто открываю файл. Я не сохраняю файл обратно на диск. Я могу посмотреть в Finder и увидеть «~», как только я открою файл.

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

Является ли это поведением OS X по умолчанию? Есть ли способ настроить NSPersistentDocument или мою базовую модель данных, чтобы открытие файла меняло хранилище внутри приложения, но изменения не распространяются обратно на диск, если я явно не сохраняю?

ответ

0

Основные данные, по-видимому, предполагают, что если вы открываете старый файл с новой программой, вы должны продолжить миграцию. По собственному опыту поведение по умолчанию, когда файл открывается, автоматически переносится и больше не может быть открыт с помощью предыдущей программы. Я считаю, что он имеет отношение к хэш-номерам, которые необходимо изменить, чтобы позволить новому магазину открыть файл, что делает его постоянным изменением в документе; так что нет, я не думаю, что вы можете открыть файл, но не распространять изменения обратно на диск. Возможно, вы можете переопределить метод, который позволит вам сделать копию перед началом миграции.

для разработчиков Apple Library упоминает временные файлы, которые сделаны:

Если миграция протекает успешно, существующий магазин в storeURL переименована с «~» суффиксом перед любым расширением файла и мигрировали магазин сохранен в магазинеURL.

http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CoreDataVersioning/Articles/vmInitiating.html#//apple_ref/doc/uid/TP40004399-CH7-SW1