开发者

How to recognize File or Folder from dropbox APi

Hello I am using dropbox api and displaying meta data from dropbox account..

I want to differentiate files and folders from loaded data..because I want to show next level if there is folder and if there is file 开发者_如何学JAVAI don't want to show next View

my code to load data

- (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata {

    [self.metaArray release];
    self.metaArray = [[NSMutableArray alloc]init ];

    for (DBMetadata *child in metadata.contents) {

        NSString *folderName = [[child.path pathComponents] lastObject];
        [self.metaArray addObject:folderName];



    }



    [self.tableView reloadData];
    [self.activityIndicator stopAnimating];


}

How to recognize File or Folder from dropbox APi


According to the Dropbox Developer Docs the metadata includes a property called is_dir which should allow you to determine whether the particular item is a directory or not.

Looking at the header of DBMetaData it is indeed exposed as a property

@property (nonatomic, readonly) BOOL isDirectory;

So you can just do a simple test like so

- (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata
{
    if (metadata.isDirectory) {
        // handle directory here
    } else {
        // handle file here
    }
}

With regards pushing views based on whether or not an entry is a directory, you could subclass UITableViewCell and add an isDirectory property. Instead of adding just the name to self.metaArray you could add a dictionary containing both the name and the value of isDirectory. Then in your table view datasource where you populate the cells you'd set the isDirectory property of the UITableViewCell based on the same property in the appropriate dictionary from the array. Finally, in the table view delegate method

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

you can get the selected cell using the indexPath and then test the isDirectory property and based on it's value take the appropriate action.

Hope this helps.


Using the API V2 of Dropbox with the Dropbox SDK is:

DropboxClient *client = [DropboxClientsManager authorizedClient];
[[client.filesRoutes listFolder:path]
 response:^(DBFILESListFolderResult *result, DBFILESListFolderError *routeError, DBRequestError *error) {
     if (result) {

         for (DBFILESMetadata *entry in result.entries) {
             if ([entry isKindOfClass:[DBFILESFileMetadata class]]) {
                 DBFILESFileMetadata *fileMetadata = (DBFILESFileMetadata *)entry;
                 NSLog(@"File: %@", fileMetadata.name);
             } else if ([entry isKindOfClass:[DBFILESFolderMetadata class]]) {
                 DBFILESFolderMetadata *folderMetadata = (DBFILESFolderMetadata *)entry;
                 NSLog(@"Folder: %@", folderMetadata.name);
             }
         }
     }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜