Проблема написания списка в режиме локального или административного режима - PullRequest
1 голос
/ 09 апреля 2011

В моем приложении я сохраняю пользовательские настройки (которые применимы для всех пользователей) в файле plist, который прикреплен как форма связки.

Проблема в том, что в режиме администратора он работает нормально, но когда я запускаю приложение, файл не записывается. Нужно ли устанавливать какой-либо атрибут для записи в plist в локальном режиме? Или это вообще невозможно?

Мой код для записи файла:

-(void)SavePrefrence:(NSString *)fileName PrefrenceOption:(NSMutableDictionary *)pDict{
    NSString *filePath  = [[[NSBundle mainBundle] pathForResource:fileName ofType:@"plist"] retain];

    NSDictionary *pTemp = [[NSDictionary alloc]initWithDictionary:pDict];
    bool bRet = [pTemp writeToFile:filePath atomically:YES]; 

    if(bRet==YES){
        NSLog(@"File Saved ");
    }
    else {
        NSLog(@"File not saved ");
    }


}

Это код, который вызывает его:

-(void)SaveListSettings:(NSMutableDictionary *)pListSettings{
    [ self SavePrefrence:@“MyList" PrefrenceOption:pListSettings];
    if(pListInfo)
        [pListInfo release];
    [self LoadListProfile];

}

Ответы [ 2 ]

3 голосов
/ 09 апреля 2011

Пакет приложений по умолчанию будет доступен для записи только владельцу (если он установлен путем перетаскивания в папку «Приложения», это будет тот, кто его установил; если он установлен с помощью .pkg, он, вероятно, должен быть пользователем root),То, как вы это делаете, если я правильно следую, требует, чтобы у пользователя был доступ на запись в папку «Содержимое / ресурсы» приложения, что является очень плохой идеей (не то, чтобы это было неслыханно - см. Университет Юты * 1001).* документация о «Плохо сделанных приложениях» для примеров).На самом деле, сохранение настроек внутри приложения - плохая идея;это то, для чего предназначены различные папки Library / Preferences (~ / Library / Preferences для личных настроек, / Library / Preferences для общесистемных настроек. Но, конечно, / Library / Preferences доступна для записи только администраторам (по очень веским причинам)Я действительно не знаю хорошего способа справиться с этим, поскольку общесистемные настройки, изменяемые не администраторами, не совсем нормальны.

0 голосов
/ 10 апреля 2011

Вы можете использовать установщик, который запрашивает пароль администратора, а затем создать «/ Library / Application Support / MyApp», а затем либо сделать этот мир доступным для записи, либо создать в нем подпапку, которая будет доступна для записи всем пользователям. Теперь MyApp, работающий под учетной записью без прав администратора, может записывать данные в эту общую папку.

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

Кстати: обе эти опции не будут соответствовать правилам Mac App Store. Может быть, вы можете использовать «/ Users / Shared», но я не знаю, разрешено ли это MAS, и в любом случае это далеко от стандарта. Что оставило бы вас с хранением на веб-сервере ...

...