我创建了一个 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]);
}