[英]Save/create folder that it to be treated as a file with FileManager
我有一個 iOS/CatalystMacOS 應用程序,可以創建、保存、打開自定義文本文件(使用我自己的文件擴展名)。 這工作正常。 但是,現在我需要的不僅僅是文字。 我也想在這個文件中保存可選文件。 顯然 macOS(和 iOS?)可以將文件夾視為文件。 但我無法讓它按預期工作。 該文件夾仍被視為文件夾,即使它具有文件擴展名。
這是我用來創建文件夾的代碼:
func showNewFilePathDialog(from viewController: UIViewController, saveCompleted: URLCallback?) {
guard !isPresenting else {
return
}
let objectToSave = ...
// Find an available filename
var number = 0
var exportURL: URL!
var data: Data!
var fullFileName = ""
while true {
let numberText = number == 0 ? "" : number.asString()
fullFileName = "baseFileName" + "\(numberText).myFileExtension"
exportURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent(fullFileName)
let dict = objectToSave.toDict()
let json = dict.json!
data = json.data(using: .utf8)!
if FileManager.default.fileExists(atPath: exportURL.path) {
number += 1
continue
} else {
break
}
}
do {
try FileManager.default.createDirectory(atPath: exportURL.path, withIntermediateDirectories: true, attributes: nil)
} catch {
NSLog("Couldn't create document directory")
viewController.presentErrorDialog(from: error)
return
}
// 2. Create containing json file
do {
try data.write(to: exportURL.appendingPathComponent("content.json"))
} catch {
viewController.presentErrorDialog(from: error)
return
}
isPresenting = true
self.onSaveDialogComplete = saveCompleted
let pickerViewController = UIDocumentPickerViewController(url: exportURL, in: .exportToService)
pickerViewController.delegate = self
viewController.present(pickerViewController, animated: true)
}
然后它在 macOS finder 中顯示如下:
它會在 iOS 中顯示類似,也不允許我將文件夾作為單個文件打開。
編輯:使用 UIDocument/public.composite-content/FileWrapper 似乎也有效,但問題仍然在於:在 macOS finder 中查看時,它仍被視為文件夾。 此外,當嘗試通過 UIDocumentPickerViewController 從打開對話框中打開應用程序時,嘗試打開文件包只會打開文件夾,而不會讓我將其打開到應用程序中:(
Edit2:還嘗試刪除除 com.apple.package 之外的所有內容,但也不起作用。 仍然無法打開我的自定義類型,因為它的行為類似於文件夾。
得到它的工作。 似乎我的應用程序的舊版本干擾了系統文件類型。 所以我搜索了我的應用程序名稱並從我的計算機中刪除了舊版本。 然后系統識別出我的文件后綴,馬上打開了!
但是這次我丟失了圖標,但這是另一個問題:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.