0

我创建了一个 NSDictionary (+dictionaryWitContentsOfFile:),使用 -setValue:ForKey: 更改一些值,然后,当应用程序终止时,使用 -writeToFile: 自动将此字典写回文件。一切都很好,直到我在另一个用户帐户中打开相同的程序。

有没有人预感什么会导致这个错误?

文档只是说 -writeToFile:automatically: 当它的某些值不适合 plist 时返回 NO。这绝对不是这里的问题。我现在只能说,当我使用我正在开发的帐户时,程序可以编写文件。我的 Mac 上有另一个用户帐户,它不是管理员,并且 -writeToFile:automatically 返回 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]);
}
4

1 回答 1

0

好的,发现了。应用程序的资源文件夹不是保存任何内容的正确位置,因为大多数 Mac 用户没有在应用程序文件夹中写入的权限。

我现在用

NSString *path = [NSString stringWithFormat:@"%@/Library/Preferences/com.myCompany.myApp.plist",NSHomeDirectory()];

反而。

于 2011-08-27T11:23:18.963 回答