我试图在我的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");
}];
有没有人遇到这个问题?显然我在设置的某个地方遗漏了一些东西,但我不知道是什么。
答案 0 :(得分:3)
将-ObjC -all_load添加到应用程序项目的Build Settings中的Other Linker Flags设置。
中的上述步骤答案 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中的“删除不需要的代码”所述