Mac App Store - 无法保存文件

Posted

技术标签:

【中文标题】Mac App Store - 无法保存文件【英文标题】:Mac App Store - can't save a file 【发布时间】:2011-05-19 03:52:50 【问题描述】:

当您通过 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);
    

【问题讨论】:

【参考方案1】:

如果您的目标是 Mac App Store,则无法将文件写入应用程序包目录。捆绑包应该是不可变的。

考虑使用NSUserDefaults 保存您的配置,或者,如果您确实需要单独的文件,officially recommended location 是 (~)/Library/Application Support。 Matt Gallagher 写了一篇名为Finding or creating the application support directory 的好帖子,他在其中提供了一个使用标准NSApplicationSupportDirectory 后跟可执行文件名称的解决方案。

【讨论】:

Mac App Store 真的与它无关。无论如何,应用程序包都应该禁止编写。 App Bundle 不应自行修改。 @Joshua 我同意他们不应该这样做。但是,从技术上讲,修改 app bundle 是可能的,一些非 MAS 应用程序这样做是为了根据已安装的应用程序插件动态注册文档类型,因为 Launch Services 不支持运行时文档类型注册。【参考方案2】:

通常,您应该假设您的应用程序的资产是只读的。一般情况下都是如此,不仅适用于应用商店。

如果要将用户设置保存为属性列表,请使用NSUserDefaults 而不是修改应用程序内的文件。这将“做正确的事”,即将首选项保存到~/Library/Preferences

【讨论】:

以上是关于Mac App Store - 无法保存文件的主要内容,如果未能解决你的问题,请参考以下文章

将 Mac 催化剂二进制文件上传到 App Store 连接时出现问题

iOS-发布APP到APP STORE步骤(En)

无法向 Mac App Store 提交应用程序:“未创建任务。”

使用 c# 在 Windows Store App 中裁剪和保存图像(UIElement)

mac JetBrains IDE(WebStromIntelliJ IDEA) svn无法保存密码,反复提示输入密码

Mac DS_Store