2011-10-17 6 views
0

Я пытаюсь реализовать Версии в приложении, которые уже написаны для Snow Leopard. Это приложение на основе документов с хранилищем SQLite. Каждый документ сохраняется как файл SQLite db.Проблемы с реализацией версий

Я выполнил соответствующие методы в моем NSPersistentDocument подкласса:

+ (BOOL)autosavesInPlace {return YES;} 
+ (BOOL)preservesVersions {return YES;} 

Теперь у меня есть новое меню Файл в приложении с «Сохранить версию» и т.д. Я создаю новый документ в моем приложении, сохранить его, сделать некоторые изменения, сохраните снова .. Когда я ввода версии браузера я получаю:

kCGErrorFailure: CGSDisplayID: App trying to enumerate [0 to CGSGetNumberOfDisplays()] instead of using CGSGetDisplayList(). Compensating... 
kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged. 

в правой части версии браузера в списке версий я вижу несколько вариантов, но они не отображаются в стеке окон. Похоже, что окна находятся в стеке, но полностью прозрачны. Когда я щелкаю на любую версию в списке я получаю журнал:

CoreData: error: (8) attempt to write a readonly database 

чем если бы я попытался восстановить одну из версий - версия браузера нормально замкнутые, не появляется окна и программа перестает отвечать на запросах.

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

+0

Попробуйте сделать то, что он говорит, добавив точку останова в 'CGErrorBreakpoint()'. – spudwaffle

+0

Итак, вы используете Core Data, но не NSPersistentDocument? – Aderstedt

+1

Я уверен, что ошибка CGSDisplayID не связана между собой. – Aderstedt

ответ

1

Каждое хранилище данных ядра хранится на диске при открытии браузера версий. Вы посмотрели на свои переопределения для создания документа и для их чтения? Вы уверены, что никто из них также не редактирует документ? Вы также можете проверить свои методы awakeFromNib, чтобы убедиться, что вы не пишете/не сохраняете ничего в новом документе.

Это может быть сложно отладить проблемы при выходе из браузера версии. Чтобы было проще, вы можете отредактировать свою текущую схему, выбрать вкладку «Параметры» и установить флажок «Включить отладку в« Обзор всех версий ».

Смежные вопросы