Блокировка одного NSPersistentDocument

В настоящее время мое приложение использует CoreData в качестве серверной части для хранения в одном файле данных SQL, хранящемся в ~/Library/Application Support/MYAPP/MyDataFile.sqlite. Я знаю, что это необычная ситуация, но как лучше всего «заблокировать» этот файл, чтобы, если пользователь решит (по какой-то глупой причине) запустить вторую копию моего приложения, Core Data не взбесился? Должен ли я использовать что-то старое, например, написать где-нибудь файл блокировки и проверить его, или есть более приятный способ сделать это какао?


person Tony Arnold    schedule 13.12.2009    source источник
comment
Является ли ваше приложение приложением командной строки? Если это не так, вам, вероятно, не о чем беспокоиться. OS X обычно не позволяет запускать несколько экземпляров .app.   -  person Barry Wark    schedule 14.12.2009
comment
Да, вы правы, это, вероятно, немного переусердствовать. Я запустил два экземпляра приложения, и я получаю только ошибки Core Data - на самом деле, похоже, эти изменения/ошибки не записываются в хранилище.   -  person Tony Arnold    schedule 16.12.2009


Ответы (1)


В качестве альтернативы блокировке файла SQLite вы можете попробовать использовать LSMultipleInstancesProhibited, чтобы запретить пользователям запускать два экземпляра приложения.

Изменить: недостатком является то, что это также предотвратит одновременное использование вашего приложения несколькими пользователями (быстрое переключение пользователей), хотя они не используют основное хранилище данных.

person diciu    schedule 13.12.2009
comment
Да, это не совсем то, что мне нужно — я хочу, чтобы пользователи могли одновременно запускать мое приложение в разных учетных записях, просто не в одно и то же время. Я думаю, что закодирую что-нибудь в методе applicationWillFinishLaunching: моего делегата приложения. - person Tony Arnold; 14.12.2009