在我的应用程序中,我将用户首选项(适用于所有用户)存储到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];

}

最佳答案

默认情况下,应用程序捆绑包只能由所有者写入(如果通过拖动到“应用程序”文件夹中进行安装,则无论安装它的人都是谁;如果由.pkg安装,则它应该是root)。如果我正确遵循的话,您执行此操作的方式需要用户对应用程序的Contents / Resources文件夹具有写访问权,这确实是个坏主意(并非闻所未闻-参见犹他大学的例如)。实际上,将首选项保存在应用程序内部实在是一个坏主意。这就是各种Library / Preferences文件夹的用途(〜/ Library / Preferences用于个人设置,/ Library / Preferences用于系统范围的设置。但是,当然,/ Library / Preferences仅可由管理员写(出于很好的理由)我真的不知道解决这个问题的好方法,因为非管理员可以修改的系统范围设置并不完全正常。

10-08 17:23