MAC OS X NSMutableDictionary writeToFile失败

时间:2012-04-20 14:19:44

标签: macos cocoa nsmutabledictionary writetofile

我的代码就是这个。并且ret的值始终为NO,我认为不允许写入路径。 但是我可以在我的应用程序中将我的信息存储在MAC OS X上?你能帮我找到存储我应用设置的正确途径吗?非常感谢〜:)

NSString* writePath = [[[NSBundle mainBundle] resourcePath]
                        stringByAppendingPathComponent:@"Brain.plist"];

NSLog(@"%@",writePath);
NSMutableDictionary* dictForRet = [[NSMutableDictionary alloc]init];
NSNumber* applicationNumber = [[NSNumber alloc]initWithInt:0];
NSMutableDictionary* root = [[NSMutableDictionary alloc]init];
NSArray* propertyArray = [[NSArray alloc]initWithObjects:kPropertyArrayApplicationPath,kPropertyArrayApplicationCS, nil];
NSMutableDictionary* brain = [[NSMutableDictionary alloc]init];
[root setObject:propertyArray forKey:kPropertyArrayName];
[dictForRet setObject:applicationNumber forKey:kPropertyKeyApplicationNumber];
[dictForRet setObject:root forKey:kPropertyArrayDictName];
[dictForRet setObject:brain forKey:kPropertyDictBrainName];
NSLog(@"%@",dictForRet);
ret = [dictForRet writeToFile:writePath atomically:YES];
NSLog(@"%d",ret);

2 个答案:

答案 0 :(得分:2)

资源路径是指应用包中的Resources /目录。您不希望写入此路径,这通常是不允许的(特别是在沙盒应用程序的情况下)。

要获取标准位置的路径,例如Application Support目录,请使用NSSearchPathForDirectoriesInDomains

你可能正在寻找类似的东西:

NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);

这将返回一个(大小为1的数组)应用程序支持URL,如果您的应用程序是沙盒,则会自动选择正确的路径。

答案 1 :(得分:0)

您无法写入当前应用的捆绑包。

相反,您可以将其填入沙箱,~/Library/Application Support/YOUR_APP/或用户指定的位置。