首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建与OSX相关的文件

创建与OSX相关的文件
EN

Stack Overflow用户
提问于 2013-04-27 06:50:52
回答 2查看 965关注 0票数 0

我正在尝试构建一个可以轻松地从一种文件格式转换到另一种文件格式的应用程序。其想法是将源文件拖到dock tile上,输出文件将与源文件一起创建(在同一目录中)。

在阅读了文档之后,我已经正确地设置了所有内容--我想...但它不起作用。

我的Info.plist包含以下内容:

代码语言:javascript
复制
<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            my_src_type
        </array>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        [...]
    </dict>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            my_dest_type
        </array>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>NSIsRelatedItemType</key>
        <true/>
        [...]
    </dict>
</array>

如果我正确阅读了文档,这应该允许我的应用程序通过拖放接受my_src_type文件,并将my_dest_type文件输出到与输入文件相同的目录中,当然,前提是我让沙箱知道了这一点。

为此,我有一个如下所示的SimpleFilePresenter

代码语言:javascript
复制
 @interface SimpleFilePresenter : NSObject<NSFilePresenter>
 @property (atomic, strong) NSURL *presentedItemURL;
 @property (atomic, strong) NSURL *primaryPresentedItemURL;
 @end

 @implementation SimpleFilePresenter
 - (NSOperationQueue *)presentedItemOperationQueue {
         return [NSOperationQueue mainQueue];
 }
 @end

只要我使用addFilePresenter:请求创建输出文件的权限,就会在控制台中得到以下错误。

代码语言:javascript
复制
2013-04-26 6:33:52.741 PM my_app[27639]: NSFileSandboxingRequestRelatedItemExtension: an error was received from pboxd instead of a token. Domain: NSPOSIXErrorDomain, code: 1
2013-04-26 6:33:52.741 PM my_app[27639]: +[NSFileCoordinator addFilePresenter:] could not get a sandbox extension. primaryPresentedItemURL: file://[...]/file.my_src_type, presentedItemURL: file://[...]/file.my_dest_type
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-27 11:43:30

事实证明,addFilePresenter:的,而不是的、同步的或即时的。我所要做的就是在addFilePresenter:之后调用[NSFileCoordinator filePresenters],它似乎具有阻塞的效果,直到所有的文件呈现程序都准备就绪。

另外,我使用的是Qt,所以让我感到惊喜的是,这一切都可以工作,而不需要从更可怕的NSFileCoordinator方法中获得专门创建的NSURL对象。

票数 1
EN

Stack Overflow用户

发布于 2013-07-04 01:09:27

此错误的另一个原因可能是项目信息文件中的UTI定义不正确或缺失。

UTI必须定义为文档类型,并且它应该与UTI定义的导入/导出的UTI部分相同(如果它不是内置的UTI)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16246349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档