2011-07-19 5 views
2

こんにちは私は... DropboxのAPIを使用してDropboxアカウントからのメタデータを表示していますDropboxのAPIからのファイルまたはフォルダを認識する方法

私は次のレベルを表示したい、ロードされたdata..becauseからのファイルとフォルダを区別したい

そこにフォルダがあると、ファイルがある場合、私は、データ

- (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]; 


} 

Like this

答えて

4

のAcをロードするために、次のビューに

私のコードを表示したくない場合Dropbox Developer Docsの場合、メタデータにはis_dirと呼ばれるプロパティが含まれています。このプロパティを使用すると、特定のアイテムがディレクトリであるかどうかを判断できます。それは確かにプロパティとして

@property (nonatomic, readonly) BOOL isDirectory; 

を暴露されDBMetaDataのヘッダを見ると

は、だからかどうかに基づいてビューをプッシュに関してはそう

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

のような簡単なテストを単に行うことができますエントリがディレクトリの場合は、サブクラスUITableViewCellを追加し、isDirectoryプロパティを追加できます。 self.metaArrayに名前だけを追加する代わりに、名前と値の両方を含む辞書をisDirectoryに追加することができます。次に、テーブルビューのデータソースで、セルに値を設定する場合は、UITableViewCellisDirectoryプロパティを、配列の適切な辞書の同じプロパティに基づいて設定します。最後に、テーブルビューのデリゲートメソッド

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

にあなたはindexPathを使用して、選択したセルを取得し、isDirectoryプロパティをテストし、それの価値、適切な行動を取るに基づいてすることができます。

これが役に立ちます。 DropboxのSDKとのDropboxのAPI V2を使用し

+0

あなたはトップレベルのために 'for'ループに入る前に、[OK]を...返信 – iProgrammer

+1

いただき、誠にありがとうございますあなたはどちらかテストする必要があります'metadata.isDirectory'の代わりに' for'の中で 'child.isDirectory'を使用してください –

+0

Yaa私は間違ったコードを使っていました...それは今働いています.. – iProgrammer

3

は次のとおりです。

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); 
      } 
     } 
    } 
関連する問題