标签: uti

文档类型与导出和导入的UTI

任何人都可以向我解释Xcode 5.1中文档类型,导出的UTI和导入的UTI之间的区别吗?我希望能够让我的应用程序根据文件扩展名自动检测文件类型.为了做到这一点,我需要实施这三个中的哪一个?

xcode document file-type uti

35
推荐指数
1
解决办法
1万
查看次数

为什么我的iOS应用程序没有出现在其他应用程序的"打开方式"对话框中?

我正在尝试实现注册过程,该过程允许我的iOS应用程序显示在其他应用程序的"打开方式"列表中(如Apple的文档交互编程主题中所述).我希望我的应用程序能够处理来自任何提供标准音频文件格式(MP3,AIFF,WAV等)的应用程序的音频.

据我所知,我需要做的就是将CFBundleDocumentTypes关键字和相关的子数据添加到我的应用程序的Info.plist中.这是我放入的(通过Xcode 4的文档类型编辑器):

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>scrubbulator-icon</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>Audio</string>
        <key>LSHandlerRank</key>
        <string>Alternative</string>
        <key>LSItemContentTypes</key>
        <array>
        <string>public.mp3</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

添加此代码不会在应用程序的"打开方式"菜单中显示我的应用程序(我在iPhone上测试,使用Dropbox中的MP3作为文件源.应用程序AudioMemos和Evernote都显示为Dropbox中的MP3文件,所以我知道支持的格式).有什么明显的东西我做错了,还是还有其他我需要实现的东西?

(注意:我没有UTExportedTypeDeclarations在我的Info.plist中设置一个项目,因为我理解这些只是自定义UTI所必需的.因为我使用的是系统UTI,我认为它不应该是必要的,但如果我有正确的请纠正我我错了.)

编辑

我添加了以下Exported Type UTI,但没有成功:

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
        <string>kUTTypeMP3</string>
        </array>
        <key>UTTypeDescription</key>
        <string>Audio file</string>
        <key>UTTypeIdentifier</key>
        <string>kUTTypeMP3</string>
        <key>UTTypeTagSpecification</key>
        <dict>
        <key>public.filename-extension</key>
        <array>
            <string>mp3</string>
        </array>
        </dict>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

file-handling uti ios launch-services

31
推荐指数
2
解决办法
2万
查看次数

获取给定扩展的统一类型标识符

我试图在Cocoa中找到一些方法来从文件扩展名转换为统一类型标识符.也就是说,我想找到一些方法:

".jpg" => "public.jpeg"
".html" => "public.html" 
".ttf"=> "public.truetype-font"
Run Code Online (Sandbox Code Playgroud)

我搜索过NSWorkspace文档但找不到任何内容.我能得到的最接近的是:

- (NSImage *)iconForFileType:(NSString *)fileType
Run Code Online (Sandbox Code Playgroud)

返回文件扩展名的图标,和

– (NSString *)preferredFilenameExtensionForType:(NSString *)typeName
Run Code Online (Sandbox Code Playgroud)

这与我正在尝试的完全相反.你们中的任何人都知道怎么做吗?

我真的希望我不必手动检查很多扩展.

提前致谢.

macos cocoa objective-c uti

19
推荐指数
2
解决办法
6468
查看次数

MFMessageComposeViewController iOS7 addAttachmentData:typeIdentifier:filename:not working

我想在iOS7上将图像附加到MMS上.我写了以下代码:

    MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init];
    messageController.messageComposeDelegate = self;

    NSData *imgData = [NSData dataWithContentsOfFile:@"blablabla"];
    BOOL didAttachImage = [messageController addAttachmentData:imgData typeIdentifier:@"public.data" filename:@"image"];

    if (didAttachImage)
    {
        // Present message view controller on screen
        [self presentViewController:messageController animated:YES completion:nil];
    }
    else
    {
        UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                               message:@"Failed to attach image"
                                                              delegate:nil
                                                     cancelButtonTitle:@"OK"
                                                     otherButtonTitles:nil];
        [warningAlert show];
        return;
    }
Run Code Online (Sandbox Code Playgroud)

问题是,当显示SMS屏幕时,它无法识别图像,也无法发送.我看到这样的事情:

消息屏幕

我相信这与我发送的imgData或者typeIdentifier有关.

注意:我尝试了几乎所有可能的typeIdentifiers:@"public.data",@"public.image",@"public.item",...等没有工作.

有人可以帮帮我吗?你使用的typeIdentifier是什么?我在iPhone 5,iOS 7.0.2上测试.

谢谢.


解:

正如Greg指示的那样,这解决了我的问题:将文件名设置为@"image.png",将typeIdentifier设置为kUTTypePNG.

[messageController addAttachmentData:imgData typeIdentifier:(NSString *)kUTTypePNG filename:@"image.png"];
Run Code Online (Sandbox Code Playgroud)

谢谢格雷格.

mms uti ios mfmessagecomposeviewcontroller ios7

19
推荐指数
1
解决办法
1万
查看次数

什么是docx文件的统一类型标识符

阅读Developer Library的文档,doc的标识符是" com.microsoft.word.doc ".但是docx的标识符是什么?

uti ios5

17
推荐指数
1
解决办法
2957
查看次数

自定义UTI不适用于iOS 10中的iMessage

我为iOS 9的iOS应用程序定义并使用了自定义UTI类型.现在,在使用XCode 8和iOS 10后,如果通过iMe​​ssage发送文件,我无法"打开"该文件.如果我点击图标,虽然显示了正确的图标,但没有任何反应.如果是通过电子邮件发送的,我仍然可以将其导入我的应用程序.邮件和iMessage有区别吗?

我的info.plist声明如下所示:

    <key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>Icon-60@3x</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>My Voting Lists File</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.my-org.document.lists</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.text</string>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>My Voting List File</string>
        <key>UTTypeIdentifier</key>
        <string>com.my-org.document.lists</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>mylist</string>
            </array>
        </dict>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

我也搜索了一个解决方案,但没有找到对我有用的东西. 这个stackoverflow讨论没有帮助我:(任何想法改变了什么或我的错误是什么?提前感谢!

uti ios imessage

15
推荐指数
0
解决办法
627
查看次数

什么是Xcode 4中的"导入的UTI"?

在Xcode 4中,项目信息中有"文档类型","导入的UTI"和"导出的UTI"的列表.我知道哪些文档类型,但导入/导出的UTI是什么?我是否还需要将每种文档类型声明为导入/导出的UTI?我用UTI.

谢谢.

xcode uti

14
推荐指数
1
解决办法
7467
查看次数

内容类型/ UTI在应用中打开CSV

如何编写我的.plist文件的CFBundleDocumentTypes属性,以允许应用程序显示在其他应用程序的"Open in ..."对话框中?

这是我的,但它不起作用

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>Readings</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>text.csv</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

csv cocoa-touch plist uti

14
推荐指数
1
解决办法
2770
查看次数

为iCloud"管理存储"列表指定应用程序名称

iCloud在哪里获取它在iCloud首选项中显示的应用程序名称?

  • iOS版: Settings.app > iCloud > Storage & Backup > Manage Store > Documents & Data
  • OSX: System Preferences > iCloud > Manage ...

我知道iCloud会将应用程序列为"未知",最初会显示一个空白图标(这确实发生在我的情况下),但是我的应用程序现在通过其"内部"名称而不是"漂亮"名称出现在此列表中(包含iCloud的应用更新尚未提交,因此这更加奇怪).

我的直觉说该名称将被定义为我的应用程序中的部分CFBundleDocumentTypesUTExportedTypeDeclarations部分,info.plist但iCloud使用的名称仅出现在那里的UTI值中.iCloud值也不匹配应用程序CFBundleDisplayName或配置门户中附加到App ID的描述.

sync info.plist uti ios icloud

12
推荐指数
1
解决办法
1678
查看次数

iOS 11上的UIDocument创建:不允许读者访问该URL

从iOS 11开始,每次使用UIDocumentAPI 创建新文档时都会遇到以下错误:

[错误]无法获取项目/var/mobile/Containers/Data/Application/XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX/Documents/myDoc-XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX.myFile(n)的属性值.

错误:错误域= NSFileProviderInternalErrorDomain代码= 1
"不允许读者访问该URL."
UserInfo = {NSLocalizedDescription =不允许读者访问该URL.}

不同于类似的问题(1,2,3上SO)在此,我没有使用UIDocumentBrowserViewController.我只是创建一个UIDocument并自己调用save()Documents目录.我发现的最接近的问题用途UIManagedDocument.但是,就我而言,尽管出现错误消息,仍然可以成功创建和写入文件.

这是我保存例程的要点:

@IBAction func createDoc(_ sender: Any) {
    let uuid = UUID().uuidString
    let doc = Document(baseName: "myDoc-\(uuid)")
    doc.save(to: doc.fileURL, for: .forCreating) { (completed) in
        if (completed) {
            doc.close(completionHandler: nil)
            self.verifyNumberOfFiles()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

UIDocument为了简化这个问题,我的子类也几乎是空白的:

class Document: UIDocument {    

    let fileExtension = "myFile"

    override …
Run Code Online (Sandbox Code Playgroud)

document-based uti ios uidocument ios11

12
推荐指数
1
解决办法
2069
查看次数