使用Google云端硬盘上传的GTLService中的断言失败

时间:2012-12-15 20:05:59

标签: ios google-drive-api

我试图在我的iOS应用中使用Google云端硬盘。它验证和浏览确定,但当我尝试上传文件时,我收到以下错误:

*** Assertion failure in -[GTLService uploadFetcherWithRequest:fetcherService:params:](), /google-api-objectivec-client-read-only/Source/Objects/GTLService.m:565

这是我的相关代码:

GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithData:fileContent MIMEType:@"application/pdf"];

GTLDriveFile *file = [[GTLDriveFile alloc] init];
file.title = @"test.pdf";

GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:file uploadParameters:uploadParameters];

[self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,
                                                        GTLDriveFile *updatedFile,
                                                        NSError *error) {
  NSLog(@"Done");
}];

有没有人遇到这个问题?显然我在设置的某个地方遗漏了一些东西,但我不知道是什么。

2 个答案:

答案 0 :(得分:3)

将-ObjC -all_load添加到应用程序项目的Build Settings中的Other Linker Flags设置。

检查https://developers.google.com/drive/quickstart-ios

中的上述步骤

答案 1 :(得分:1)

我浏览了源代码,相应的行是:

GTL_ASSERT(uploadClass != nil, @"GTMHTTPUploadFetcher needed");

在stackoverflow上搜索到了this answer

  

它表示类GTMHTTPUploadFetcher未链接到您的应用程序。   由于类文件未在调试或发布版本目标中链接,或者由于预处理器未定义GDATA_INCLUDE_YOUTUBE_SERVICE,因此可能会丢失该类,如http://code.google.com/p/gdata-objectivec-client/wiki/BuildingTheLibrary中的“删除不需要的代码”所述