在我的应用程序中,我将用户首选项(适用于所有用户)存储到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仅可由管理员写(出于很好的理由)我真的不知道解决这个问题的好方法,因为非管理员可以修改的系统范围设置并不完全正常。