执行以下操作将本地文件上传到Google云端硬盘会导致崩溃。
GTLDriveFile *gFile = [GTLDriveFile object];
gFile.title = "MyFileName.txt";
// Other file setup
NSDate *myLocalDate = [self fileDate:myPath];
gFile.modifiedDate = [GTLDateTime dateTimeWithDate:myLocalDate timeZone:gmtZone];
// Other GTLQueryDrive and GTLUploadParameters calls
query.setModifiedDate = YES;
[service executeQuery:query completionHandler: (etc)
fileDate:path方法返回正在上载的本地文件的fileModificationDate属性。崩溃消息是:
错误Domain = com.google.GTLJSONRPCErrorDomain Code = 400"无法完成操作。 (无效值:无效格式:" 2014-09-14T13:21:58 + 00:00和#34;格式错误
答案 0 :(得分:1)
我最近发现了如何在stackoverflow问题14193307中发布的如何正确设置Google Drive文件的modifiedDate。然后我遇到了上面显示的问题,发现崩溃可能是Google Drive SDK中的一个错误。我成功的工作是在我的fileDate:path方法中添加另一行,如下所示:
- (NSDate *)fileDate:(NSString *)path {
NSDictionary *attributes = [fMgr attributesOfItemAtPath:path error:nil];
long long t = [attributes.fileModificationDate timeIntervalSince1970];
return [NSDate dateWithTimeIntervalSince1970:t+.1];
}
当Google Drive SDK将其内部日期转换为JSON字符串时,如果xxx = 0,它似乎会丢弃.xxx毫秒部分。因此,上面的不优雅代码强制.xxx为.100,以便modifiedDate字符串变为例如。 {2014-09-20T05:58:37.100 + 00:00}这是有效的。