You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google API Client for REST Swift SDK时,GTLRDrive_File缺失时间属性

解决GTLRDrive_File无法获取modifiedTime和createdTime的问题

这个问题我之前也踩过坑!其实原因很简单:Google Drive API默认不会返回所有文件属性,你看到的modifiedTime和createdTime属于需要主动指定才会返回的字段,不是SDK的问题,也不是属性可选的问题。

为什么会出现这种情况?

Google Drive API为了优化响应性能,默认只返回一组基础字段(比如你看到的id、name、mimeType、kind),像时间戳这类额外属性,必须在请求中明确声明要获取它们,API才会把这些数据返回给你。

解决方案:在请求中指定fields参数

你需要在构建Drive API请求的时候,设置fields属性,把需要的字段列出来。举几个常见场景的例子:

1. 获取单个文件的详情(Files.Get)

let query = GTLRDriveQuery_FilesGet.query(withFileId: "你的文件ID")
// 指定需要返回的字段,把createdTime和modifiedTime加进去
query.fields = "createdTime,modifiedTime,name,mimeType,id,kind"

// 执行请求
service.executeQuery(query) { (ticket, file, error) in
    if let file = file as? GTLRDrive_File {
        // 现在就能正常访问file.createdTime和file.modifiedTime了
        print("创建时间:\(file.createdTime)")
        print("修改时间:\(file.modifiedTime)")
    }
}

2. 获取文件列表(Files.List)

如果是批量获取文件列表,fields的格式要嵌套一层files:

let query = GTLRDriveQuery_FilesList.query()
query.fields = "files(createdTime,modifiedTime,name,mimeType,id,kind),nextPageToken"

service.executeQuery(query) { (ticket, response, error) in
    if let listResponse = response as? GTLRDrive_FileList, let files = listResponse.files {
        for file in files {
            print("\(file.name) - 创建时间:\(file.createdTime)")
        }
    }
}

验证效果

设置好fields参数后,重新运行代码再用po file打印对象,就能看到createdTime和modifiedTime出现在输出里了。

另外,如果你需要更多字段,可以直接把对应字段名加到fields里,用逗号分隔即可。

内容的提问来源于stack exchange,提问作者brandonscript

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:33:46