Mac App Store - не удается сохранить файл

Существуют ли какие-либо ограничения в отношении сохранения файлов при распространении приложения через Mac App Store?

Если я компилирую и запускаю приложение с моего компьютера, оно работает нормально - оно сохраняет конфигурацию.

Однако версия, загруженная через Mac App Store, не сохраняет конфигурацию. Я даже не вижу файл конфигурации. Кто-нибудь знает, что происходит?

Это код, который сохраняет конфигурацию:

-(void)saveConfig:(id)plist {

    NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingString: CONFIG_FILE_NAME];

    NSData *xmlData;
    NSString *error;

    xmlData = [NSPropertyListSerialization dataFromPropertyList: plist
        format: NSPropertyListXMLFormat_v1_0
        errorDescription: &error];
    if(xmlData)
    {
        if (![xmlData writeToFile:path atomically:YES])
            NSLog(@"Failed to write the config file onto the hard drive");
    }
    else
    {
        NSLog(error);
    }
}

2 ответа

Решение

Вы не можете записывать файлы в каталог комплектов приложений, если нацелены на Mac App Store. Пучок должен быть неизменным.

Рассмотрите возможность сохранения вашей конфигурации с NSUserDefaults или, если вам действительно нужен отдельный файл, официально рекомендуемое расположение: (~)/Library/Application Support. Мэтт Галлахер написал хороший пост под названием " Поиск или создание каталога поддержки приложений", в котором он предлагает решение, использующее стандартные NSApplicationSupportDirectory сопровождаемый именем исполняемого файла.

Как правило, вы должны предполагать, что ресурсы вашего приложения доступны только для чтения. Это верно в целом, а не только для магазина приложений.

Если вы хотите сохранить пользовательские настройки в виде списка свойств, используйте NSUserDefaults вместо изменения файлов внутри приложения. Это будет "просто делать правильные вещи", то есть сохранить настройки ~/Library/Preferences,

Другие вопросы по тегам