在通过Mac App Store分发应用程序时,是否存在保存文件的限制?
如果我从计算机编译并运行我的应用程序,它可以正常工作 - 它可以保存配置。
但是,通过Mac App Store下载的版本未保存配置。我甚至没有看到配置文件。谁知道发生了什么?
这是保存配置的代码:
-(void)saveConfig:(id)plist {
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingString: CONFIG_FILE_NAME];
NSData *xmlData;
NSString *error;
xmlData = [NSPropertyListSerialization dataFromPropertyList: plist
format: NSPropertyListXMLFormat_v1_0
errorDescription: &error];
if(xmlData)
{
if (![xmlData writeToFile:path atomically:YES])
NSLog(@"Failed to write the config file onto the hard drive");
}
else
{
NSLog(error);
}
}
答案 0 :(得分:2)
如果您的目标是Mac App Store,则无法将文件写入应用程序包目录。捆绑应该是不可变的。
考虑使用NSUserDefaults
保存配置,或者,如果您确实需要单独的文件,officially recommended location是(〜)/ Library / Application Support。 Matt Gallagher撰写了一篇名为Finding or creating the application support directory的帖子,其中提供了一个使用标准NSApplicationSupportDirectory
后跟可执行文件名称的解决方案。
答案 1 :(得分:1)
通常,您应该假设您的应用程序的资产是只读的。这通常是正确的,不仅适用于应用商店。
如果要将用户设置保存为属性列表,请使用NSUserDefaults
而不是修改应用程序内的文件。这将“做正确的事”,即将偏好保存到~/Library/Preferences
。