gpt4 book ai didi

ios - 与我的应用关联的文件类型

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:38 24 4
gpt4 key购买 nike

我的应用程序能够导出和导入 txt 文件。我的.plist中的CFBundleDocumentTypesUTExportedTypeDeclarations如下:

<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string>Icon60@2x</string>
</array>
<key>CFBundleTypeName</key>
<string>CSV</string>
<key>CFBundleTypeRole</key>
<string>Default</string>
<key>LSHandlerRank</key>
<string>Default</string>
<key>LSItemContentTypes</key>
<array>
<string>public.text</string>
</array>
</dict>
</array>

<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.text</string>
</array>
<key>UTTypeDescription</key>
<string>CSV</string>
<key>UTTypeIdentifier</key>
<string>public.text</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<string>csv</string>
<key>public.mime-type</key>
<string>application/myApp</string>
</dict>
</dict>
</array>

导出工作如预期,没有问题。导入也很有效,但仅适用于存储在 我的应用程序 iCloud 文件夹 之外的文件,即当我从邮件或通用 iCloud 文件夹中点击一个 .txt 文件时,我可以在 中看到我的应用程序”使用...导入” 其他应用程序旁边的菜单。但是,当我从 iCloud 上我的应用程序文件夹 中点击完全相同的文件时,我的应用程序未在 “导入方式...” 菜单中列出。

为了阐明我所说的 iCloud 上的我的应用程序文件夹 的意思。应用程序具有使用以下功能导出和保存 iCloud 上某些数据的功能:

func autoExportToIcloudDrive(_ localFileURL:URL, fileNameST:String) {
let iCloudDocumentsURL = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents").appendingPathComponent("\(fileNameST).csv");
if iCloudDocumentsURL != nil {
let olderFileURL = iCloudDocumentsURL?.appendingPathComponent(fileNameST);
if FileManager.default.fileExists(atPath: olderFileURL!.path) {
self.uniFunc.deleteFileAtPath(pathUrl: olderFileURL!);
}
do {
try FileManager.default.copyItem(at: localFileURL, to: iCloudDocumentsURL!);
} catch {
let nserror = error as NSError;
fatalError("\(nserror), \(nserror.userInfo)");
}
}
}

这会在 iCloud 驱动器中创建应用程序文件夹并将我的文件存储在那里。当我点击这个文件时,我在 "Import with ..." 菜单中看不到我的应用程序。当我将文件移出应用程序文件夹时,我的应用程序出现在 "Import with ..." 菜单中。

这是预期的设计吗?应用程序不应“查看”它们自己的 iCloud 驱动器文件夹中的文件,或者我在 .plist 文件中缺少某种附加文件关联?

最佳答案

这是有意为之的行为,因为“导入”不同于“打开”。通过导入文件,您可以将其内容作为应用程序数据的一部分。您的应用程序 iCloud 容器中的文件已经是您的应用程序数据的(一部分),因此将它们导入您的应用程序数据没有任何意义。

更新

CFBundleDocumentTypes 下的以下属性将影响您的应用是否以及如何在文件上下文中呈现:

  • CFBundleTypeRole 的值:“编辑器”与“查看器”——持久编辑需要将文件导入应用程序数据(此处“默认”不是有效值)
  • 已分配 LSHandlerRank:“所有者”、“默认”、“备用”——声明为文件类型的主要应用(所有者)可能会导致“导入方式”部分被删除
  • 注册正确的 LSItemContentTypes:“.csv”文件将被识别为“public.comma-separated-values-text”(kUTTypeCommaSeparatedText)

关于ios - 与我的应用关联的文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46256126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com