Ios 如何在Google Drive API(Swift 5)中按扩展名筛选文件
在我的应用程序中,我使用Google Drive API。我获取文件列表并将其加载到TableView。但我只想加载文件夹和音频文件。我可以找出文件夹和文件的位置,但无法按扩展名筛选文件。当我获取文件列表时,我尝试使用:Ios 如何在Google Drive API(Swift 5)中按扩展名筛选文件,ios,swift,google-drive-api,Ios,Swift,Google Drive Api,在我的应用程序中,我使用Google Drive API。我获取文件列表并将其加载到TableView。但我只想加载文件夹和音频文件。我可以找出文件夹和文件的位置,但无法按扩展名筛选文件。当我获取文件列表时,我尝试使用:.fileExtension==“mp3”,但它不起作用。有人能帮我吗?这是我的密码: ... var unreformedFileList: [AnyObject] = [] var fileListTicket: GTLRServiceTicket? ... private
.fileExtension==“mp3”
,但它不起作用。有人能帮我吗?这是我的密码:
...
var unreformedFileList: [AnyObject] = []
var fileListTicket: GTLRServiceTicket?
...
private lazy var driveService: GTLRDriveService = {
let service = GTLRDriveService()
if let user = GlobalEntitie.Variable.googleUser {
service.authorizer = user.authentication.fetcherAuthorizer()
}
service.shouldFetchNextPages = true
service.isRetryEnabled = true
return service
}()
...
var files: [FileModelProtocol] {
guard let files = unreformedFileList as? [GTLRDrive_File] else { return [] }
return files.map { GoogleDriveFileModel($0) }
}
...
func fetchFileList(path: String?, _ completion: @escaping () -> Void) {
let query = GTLRDriveQuery_FilesList.query()
query.fields = "kind,nextPageToken,files(mimeType,id,kind,name,webViewLink,thumbnailLink,trashed)"
fileListTicket = driveService.executeQuery(query,
completionHandler: { [weak self] (_, resultObject, error) in
if let error = error {
debugPrint("driveService.executeQuery error: \(error.localizedDescription)")
return
}
guard let self = self,
let fileList = resultObject as? GTLRDrive_FileList,
let unreformedFileList = fileList.files else { return }
self.unreformedFileList = []
for file in unreformedFileList {
if file.mimeType == "application/vnd.google-apps.folder" {
self.unreformedFileList.append(file)
} else {
if file.fileExtension == "mp3" { //Here I try to filter
self.unreformedFileList.append(file)
}
}
}
self.fileListTicket = nil
completion()
})
}
解决方案。需要检查每个文件的.mimeType:
...
if file.mimeType == "audio/mpeg" ||
file.mimeType == "audio/x-wav" ||
file.mimeType == "audio/aac" {
...
你考虑过@DaImTo吗?是的,我看过这个文档,在那里我找到了如何区分文件夹和文件的答案。但是我看不到关于如何按扩展名过滤文件的答案。请尝试使用mimetype audio/mpeg或audio/mp3,最好在驱动器上找到一个mp3,并检查其mimetype。让我知道,如果你设法让两个返回到同一个查询@DaImTo它的工作!谢谢。我添加了解决方案。