我从用户那里得到一个文件夹URL,然后寻找该文件夹中的任何MP3文件,标题中的问题本身,我只是想在过程中使用UTType。
正如你所看到的,我在代码中采取了所有的步骤,只需要在isMP3函数中的最后一步来完成这个难题。那么我如何使用一个路径或URL,并找出它的UTType,并使用它进行比较呢?
同样在我的方法中,Xcode给出了一个错误,并说:
在范围中找不到“UTType”
不知道为什么我有这个错误,通常它不应该是大小写,因为它是苹果定义的类型。
struct ContentView: View {
@State private var fileImporterIsPresented: Bool = false
var body: some View {
Button("Select your Folder") { fileImporterIsPresented = true }
.fileImporter(isPresented: $fileImporterIsPresented, allowedContentTypes: [.folder], allowsMultipleSelection: false, onCompletion: { result in
switch result {
case .success(let urls):
if let unwrappedURL: URL = urls.first {
if let contents = try? FileManager.default.contentsOfDirectory(atPath: unwrappedURL.path) {
contents.forEach { item in
if isMP3(path: unwrappedURL.path + "/" + item) {
print(item)
}
}
}
}
case .failure(let error):
print("Error selecting file \(error.localizedDescription)")
}
})
}
}
func isMP3(path: String) -> Bool {
// trying use UTType here
if URL(fileURLWithPath: path).??? == UTType.mp3 {
return true
}
else {
return false
}
}
2条答案
按热度按时间tcomlyy61#
要使用UTType,必须导入显式包
它可以是这样的
dgenwo3n2#
下面是另一个使用URLResourceValues.contentType并回退到UTType(filenameExtension:)的解决方案: