получить миниатюры dropbox с помощью getThumbnailBatch - PullRequest
0 голосов
/ 27 января 2020

Я использую API dropbox obj c и пытаюсь получить все миниатюры в указанной папке dropbox c.

Но я полностью застрял в DBFILESGetThumbnailBatchArg. Как мне инициировать пути ко всем изображениям в папке?

Это строка, на которой я застрял:

    [[client.filesRoutes getThumbnailBatch:<#(nonnull NSArray<DBFILESThumbnailArg *> *)#>] 
setResponseBlock:^(
DBFILESGetThumbnailBatchResult * _Nullable result, 
DBFILESGetThumbnailBatchError * _Nullable routeError, 
DBRequestError * _Nullable networkError) { etc etc..

Документация гласит:

DBFILESThumbnailArg *arg = [[DBFILESThumbnailArg alloc] initWithPath:<#(nonnull NSString *)#>];


DBFILESGetThumbnailBatchArg *batchArg = [[DBFILESGetThumbnailBatchArg alloc] 
initWithEntries:<#(nonnull NSArray<DBFILESThumbnailArg *> *)#>];

Как сделать Я инициирую список путей DBFILESThumbnailArg?

Ссылка на документацию: https://dropbox.github.io/dropbox-sdk-obj-c/api-docs/latest/Classes/DBFILESRouteObjects.html# / c: obj c (cs) DBFILESRouteObjects (cm) DBFILESGetThumbnailBatch

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Я решил это с помощью NSMutableArray, опубликовав свое решение, если другие увидят:

    //Create a temporary NSMutableArray
    NSMutableArray *thumbArgMutable = [[NSMutableArray alloc] init];

        for (NSString* image in _images)
        {
            //Create DBFILESThumbnailArg from NSString
            DBFILESThumbnailArg *arg = [[DBFILESThumbnailArg alloc] initWithPath:image];

            //Add path as DBFILESThumbnailArg to NSMutableArray
            [thumbArgMutable addObject:arg];
        }

        //Copy NSMutableArray to a new DBFILESThumbnailArg
        DBFILESThumbnailArg *thumbArg = [thumbArgMutable copy];

        //create a DBFILESGetThumbnailBatchArg and init with the copied DBFILESThumbnailArg
        DBFILESGetThumbnailBatchArg *thumbArgBatch = [[DBFILESGetThumbnailBatchArg alloc] initWithEntries:thumbArg];

        DBUserClient *client = [[DBUserClient alloc] initWithAccessToken:@"TOKEN"];

        //use property entries from DBFILESGetThumbnailBatchArg
        [[client.filesRoutes getThumbnailBatch:thumbArgBatch.entries]
         setResponseBlock:^(DBFILESGetThumbnailBatchResult * _Nullable result,
                            DBFILESGetThumbnailBatchError * _Nullable routeError,
                            DBRequestError * _Nullable networkError)
         {
            if (result) {
                NSLog(@"%@\n", result);
                //loop all downloaded thumbnails
                for (DBFILESGetThumbnailBatchResultEntry *data in result.entries)
                {
                    //extract data from each base64 encoded thumbnail string
                    NSData *thumbData = [[NSData alloc] initWithBase64EncodedString:data.success.thumbnail options:0];
                    //create UIImage from data
                    UIImage *thumbImage = [UIImage imageWithData:thumbData];
                }            


            }
            else { //if download failed
                NSLog(@"%@\n%@\n", routeError, networkError);
            }
0 голосов
/ 28 января 2020

Как вы обнаружили, метод getThumbnailBatch ожидает NSArray<DBFILESThumbnailArg *>, поэтому вызов его будет выглядеть следующим образом:

NSArray<DBFILESThumbnailArg *> *entries = @[[[DBFILESThumbnailArg alloc] initWithPath:@"/test1.jpg"], [[DBFILESThumbnailArg alloc] initWithPath:@"/test2.jpg"]];
[[client.filesRoutes getThumbnailBatch:entries]
 setResponseBlock:^(DBFILESGetThumbnailBatchResult *result, DBFILESGetThumbnailBatchError *routeError, DBRequestError *networkError) {
    if (result) {
        NSLog(@"result:");
        NSLog(@"%@", result);
    } else if (routeError) {
        NSLog(@"routeError:");
        NSLog(@"%@", routeError);
    } else if (networkError) {
        NSLog(@"networkError:");
        NSLog(@"%@", networkError);
    };
}];
...