J'essaie de créer un dossier en utilisant le Google Drive SDK pour iOS. De la documentation de Google Drive ici:
https://developers.google.com/drive/folder
Il dit que la création d'un dossier est similaire à la création d'un 'file' avec un type MIME spécial.
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) {
Mais quand j'effectue la requête, j'obtiens:
'NSInternalInconsistencyException', raison: 'upload data et fileHandle s'excluent mutuellement'
Cela suggère que je devrais utiliser l'une des methods d'usine GTLUploadParameters prédéfinies:
+ (GTLUploadParameters *)uploadParametersWithData:(NSData *)data MIMEType:(NSSsortingng *)mimeType; + (GTLUploadParameters *)uploadParametersWithFileHandle:(NSFileHandle *)fileHandle MIMEType:(NSSsortingng *)mimeType;
Mais ni l'un ni l'autre ne sont appropriés (ou travail, comme j'ai essayé). Est-ce que quelqu'un a réussi à créer des dossiers en utilisant Google Drive sur iOS?
Je fais ça:
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 isEqualToSsortingng:@"0"]) { GTLDriveParentReference *parentRef = [GTLDriveParentReference object]; parentRef.identifier = _resourceId; folderObj.parents = [NSArray arrayWithObject:parentRef]; } GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:folderObj uploadParameters:nil]; // executeQuery:...
Voici une autre variante plus complète:
+ (void)createFolderWithService:(GTLServiceDrive *)service folderName:(NSSsortingng *)folderName parentId:(NSSsortingng *)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 isEqualToSsortingng:@"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]; }