我在我的OS X应用程序中启用沙盒重新提交到应用程序商店,我正在尝试找到最优雅的方法,以确保用户只能选择我的应用程序有权更改的资源。
简化方案:
NSOpenPanel
Process Picture
按钮用户完成选择图片后,我想确保每个图片位于图片文件夹下,否则我对物理文件的写入将无声地失败。
Apple recommends the following to determine the Pictures folder's location:
图片目录包含用户的图片和照片。要得到 此目录的路径使用NSPicturesDirectory搜索路径键 使用NSUserDomainMask域。
实现上面给出了一条如下所示的路径:
/Users/thomas/Library/Containers/com.blazingfrog.latipics/Data/Pictures/picture1.jpg
但是,当我想查看用户选择的图片时,[myOpenPanel URLs]
会返回/Users/thomas/Pictures/picture1.jpg
这两条路径在逻辑上相同,但看起来非常不同。如何以每次都有效的方式比较它们?
如果它有帮助,为了准备我的沙盒应用程序,我做了以下
答案 0 :(得分:0)
你应该永远无声地失败。如果出现问题,请尽可能向用户报告。这正是NSError
的设计目标。
在尝试操作之前,您应该从不尝试确定操作是否会成功。这样做会让你对竞争条件开放。而是继续尝试操作;如果失败了,请优雅地处理。
听起来你真的想要com.apple.security.files.user-selected.read-write
权利。这将使您可以使用打开的面板对用户选择的任何文件进行写访问。
答案 1 :(得分:-3)
[[NSFileManager defaultManager] isWritableFileAtPath:path]