0

我正在尝试在我的 iOS 应用中使用 Google Drive。它验证并浏览正常,但是当我尝试上传文件时,出现以下错误:

*** 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");
}];

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

4

2 回答 2

3

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

检查https://developers.google.com/drive/quickstart-ios中的上述步骤

于 2013-03-19T14:32:06.487 回答
1

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

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

在stackoverflow上搜索导致了这个答案

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

于 2012-12-15T20:13:24.067 回答