Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Google Drive SDK iOS创建文件夹_Ios - Fatal编程技术网

使用Google Drive SDK iOS创建文件夹

使用Google Drive SDK iOS创建文件夹,ios,Ios,我正在尝试使用Google Drive SDK for iOS创建一个文件夹。从以下Google Drive文档: 它说创建一个文件夹就像创建一个具有特殊MIME类型的“文件” GTLUploadParameters *uploadParameters = nil; self.driveFile = [GTLDriveFile object]; self.driveFile.title = foldername; uploadParameters = [GTLUploadParameter

我正在尝试使用Google Drive SDK for iOS创建一个文件夹。从以下Google Drive文档:

它说创建一个文件夹就像创建一个具有特殊MIME类型的“文件”

GTLUploadParameters *uploadParameters = nil;

self.driveFile = [GTLDriveFile object];
self.driveFile.title = foldername;

uploadParameters = [GTLUploadParameters new];
uploadParameters.MIMEType = @"application/vnd.google-apps.folder";

GTLQueryDrive *query = nil;
query = [GTLQueryDrive queryForFilesInsertWithObject:self.driveFile
                                    uploadParameters:uploadParameters];


[self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,
                                                          GTLDriveFile *updatedFile,
                                                          NSError *error) {
但当我执行查询时,我得到:

“NSInternalInconsistencyException”,原因:“上载数据和文件句柄相互排斥”

这表明我应该使用预定义的GTLUploadParameters工厂方法之一:

+ (GTLUploadParameters *)uploadParametersWithData:(NSData *)data
                                         MIMEType:(NSString *)mimeType;

+ (GTLUploadParameters *)uploadParametersWithFileHandle:(NSFileHandle *)fileHandle
                                               MIMEType:(NSString *)mimeType;
但这两种方法都不合适(或者像我尝试的那样有效)。有人在iOS上使用Google Drive成功创建文件夹吗?

我这样做:

    GTLDriveFile *folderObj = [GTLDriveFile object];
    folderObj.title = folderName;
    folderObj.mimeType = @"application/vnd.google-apps.folder";

    // To create a folder in a specific parent folder, specify the identifier
    // of the parent:
    // _resourceId is the identifier from the parent folder
    if (_resourceId.length && ![_resourceId isEqualToString:@"0"]) {
        GTLDriveParentReference *parentRef = [GTLDriveParentReference object];
        parentRef.identifier = _resourceId;
        folderObj.parents = [NSArray arrayWithObject:parentRef];
    }

    GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:folderObj uploadParameters:nil];

    // executeQuery:...

下面是另一个更完整的变体:

+ (void)createFolderWithService:(GTLServiceDrive *)service
                     folderName:(NSString *)folderName
                       parentId:(NSString *)parentId
                completionBlock:(void (^)(GTLServiceTicket *, GTLDriveFile *, NSError *))completionBlock {
  GTLDriveFile *folderObj = [GTLDriveFile object];
  folderObj.title = folderName;
  folderObj.mimeType = @"application/vnd.google-apps.folder";

  if (parentId.length && ![parentId isEqualToString:@"0"]) {
    GTLDriveParentReference *parentRef = [GTLDriveParentReference object];
    parentRef.identifier = parentId;
    folderObj.parents = [NSArray arrayWithObject:parentRef];
  }

  GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:folderObj uploadParameters:nil];
  [service executeQuery:query completionHandler:completionBlock];
}

@rmaddy,你能分享你的completionBlock吗?是否传递了相同的参数,例如a
GTLDriveFile*
?@tarabyte什么完成块?
completionBlock:^(GTLServiceTicket*票证,GTLDriveFile*更新文件,NSError*错误)
?@tarabyte-Oh,根据您的回答,您必须谈论调用
executeQuery
方法的完成块。