在iOS中集成Google Drive以上载PDF文件

在iOS中集成Google Drive以上载PDF文件,ios,objective-c,pdf,google-drive-api,Ios,Objective C,Pdf,Google Drive Api,我正在iOS 8中开发一个应用程序,并通过安装以下POD集成了Google Drive: pod platform :ios, '8.0' pod 'GoogleAPIClient/Drive', '~> 1.0.0' pod 'GTMOAuth2', '~> 1.1.0' 当我放置代码以上载PDF文件时,出现以下错误: 在类型为“GTLDriveFile*”的对象上找不到属性“title” 使用未声明的标识符“GTLDriveParentReference” 选择器“query

我正在iOS 8中开发一个应用程序,并通过安装以下POD集成了Google Drive:

pod platform :ios, '8.0'

pod 'GoogleAPIClient/Drive', '~> 1.0.0'
pod 'GTMOAuth2', '~> 1.1.0'
当我放置代码以上载PDF文件时,出现以下错误:

  • 在类型为“GTLDriveFile*”的对象上找不到属性“title”
  • 使用未声明的标识符“GTLDriveParentReference”
  • 选择器“queryForFilesInsertWithObject:uploadParameters:”没有已知的类方法
  • 这是我的代码:

    GTLDriveFile *driveFile = [GTLDriveFile object];
    
    driveFile.mimeType = @"application/pdf";
    driveFile.originalFilename = @"database.pdf";
    driveFile.name = @"database.pdf";
    driveFile.size = fileSizeNumber;
    NSString *parentId = @"root";
    driveFile.parents = @[parentId];
    
    NSData *fileContent = [[NSData alloc] initWithContentsOfFile:fileName];
    GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithData:fileContent MIMEType:@"application/pdf"];
    
    
    GTLDriveParentReference *parentRef = [GTLDriveParentReference object];
    parentRef.identifier = folderIdentifier; // identifier property of the folder
    driveFile.parents = @[ parentRef ];
    
    GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:driveFile uploadParameters:uploadParameters];
    
    [self.service executeQuery:query
                  completionHandler:^(GTLServiceTicket *ticket,
                                      GTLDriveFile *updatedFile,
                                      NSError *error) {
                      if (error == nil) {
                          NSLog(@"\n\nfile uploaded into google drive\\<my_folder> foler");
                      } else {
                          NSLog(@"\n\nfile uplod failed google drive\\<my_folder> foler");            
                      }
                  }];
    
    GTLDriveFile*driveFile=[GTLDriveFile对象];
    driveFile.mimeType=@“application/pdf”;
    driveFile.originalFilename=@“database.pdf”;
    driveFile.name=@“database.pdf”;
    driveFile.size=fileSizeNumber;
    NSString*parentId=@“根”;
    driveFile.parents=@[parentId];
    NSData*fileContent=[[NSData alloc]initWithContentsOfFile:fileName];
    GTLUploadParameters*uploadParameters=[GTLUploadParameters uploadParameters uploadParametersWithData:fileContent MIMEType:@“application/pdf”];
    GTLDriveParentReference*parentRef=[GTLDriveParentReference对象];
    parentRef.identifier=folderIdentifier;//文件夹的标识符属性
    driveFile.parents=@[parentRef];
    GTLQueryDrive*query=[GTLQueryDrive queryforfileinsertwithobject:driveFile uploadParameters:uploadParameters];
    [自助服务执行:查询]
    completionHandler:^(GTLServiceTicket*票据,
    GTLDriveFile*更新文件,
    N错误*错误){
    如果(错误==nil){
    NSLog(@“\n\n文件上载到google drive\\foler”);
    }否则{
    NSLog(@“\n\n文件上传失败谷歌驱动器\\foler”);
    }
    }];
    
  • 使用
    driveFile.name
    而不是
    driveFile.title

  • 没有
    GTLDriveParentReference
    类,因此请删除这些行

  • 使用
    queryForFilesCreateWithObject
    而不是
    queryForFilesInsertWithObject


  • 我已经创建了在iOS中通过google drive上传PDF文件的完美方法

    -(void)sharePDFFileOnGoogleDrive{
    GTLServiceDrive *driveService;
    driveService = [[GTLServiceDrive alloc] init];
    driveService.authorizer = self.authToken;
    GTLDriveFile *metadata = [GTLDriveFile object];
    metadata.originalFilename = @"pdf-sample.pdf";
    metadata.title = @"PDF file Name";
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"pdf-sample" ofType:@"pdf"];
    NSString *mimeType = @"application/pdf";
    NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:filePath];
    GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithFileHandle:file
                                                                                       MIMEType:mimeType];
    GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:metadata
                                                       uploadParameters:uploadParameters];
    [driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,
                                                         GTLDriveFile *updatedFile,
                                                         NSError *error) {
        if (error == nil) {
            NSLog(@"File %@", updatedFile);
        } else {
            NSLog(@"An error occurred: %@", error);
        }
        }];
    }
    

    谢谢你解决了第一个错误。你能告诉我其他两个错误吗。没有GTLDriveParentReference类,所以删除这些行。使用
    queryForFilesCreateWithObject
    而不是
    queryforfilesinertwithobject
    非常感谢。我还有一个问题,我正试图上传pdf bt,它给了我这个错误,你能帮我解决错误域=com.google.GTLJSONRPCErrorDomain Code=403“(资源体包括不可直接写入的字段。)”UserInfo={error=资源体包括不可直接写入的字段,NSLocalizedFailureReason=(资源正文包括不可直接写入的字段。)我已经编辑了我的代码。请检查并告诉我哪里错了。