我创建了一个NSDictionary(+ dictionaryWitContentsOfFile :),用-setValue更改了一些值:ForKey:然后,当应用程序终止时,自动将这个字典写回带-writeToFile的文件: 在我在 另一个用户帐户 中打开相同的程序之前,一切都很顺利。
有人预先知道可能导致此错误的原因吗?
文档只是说-writeToFile:自动:当一些值不足以用于plist时返回NO。这绝对不是问题。 我现在可以说的是,当我在我正在开发的帐户时,程序可以写入文件。我的Mac上有另一个用户帐户,没有管理员,而且-writeToFile:自动返回NO(我在控制台中看到这个)。我使该帐户管理员但程序仍然无法保存。
感谢您的帮助,
沃尔夫冈
PS:我想我不能给你更多不冗余的信息。如果你想要更多的东西,这里是代码:
- (void)awakeFromNib
{
NSString *path = [NSString stringWithFormat:@"%@/%@.plist",[[NSBundle mainBundle] resourcePath],NSUserName()];
if (![[NSFileManager defaultManager] fileExistsAtPath:path])
{
NSLog(@"create new plist");
path = [[NSBundle mainBundle] pathForResource:@"DefaultAppData" ofType:@"plist"];
}
NSLog(@"open path:%@", path);
myPlist = [NSDictionary dictionaryWithContentsOfFile:path];
}
-(void)changeSomething
{
[myPlist setValue:[NSNumber numberWithBool:NO]] forKey:@"aKey"];
}
-(void)applicationWillTerminate:(NSNotification*)notification
{
NSLog(@"dict: %@",myPlist);
NSString *path = [NSString stringWithFormat:@"%@/%@.plist",[[NSBundle mainBundle] resourcePath],NSUserName()];
NSLog(@"save at path:%@ successful:%d", path, [myPlist writeToFile:path atomically:YES]);
}
答案 0 :(得分:0)
好的,发现了。应用程序的资源文件夹不是保存任何内容的正确位置,因为大多数Mac用户无权在应用程序文件夹中写入。
我现在用
NSString *path = [NSString stringWithFormat:@"%@/Library/Preferences/com.myCompany.myApp.plist",NSHomeDirectory()];
代替。