コンテンツリストの取得

最終更新: 2013/7

このチュートリアルではコンテンツリストの取得方法について学びます。
今回使用するCGIは command.cgiファイルリストの取得ファイル数の取得 です。

指定したフォルダに存在するファイルの情報を取得して、結果を画面に表示するアプリケーションを作成します。

このチュートリアルでは、 StoryBoardsを使用してアプリケーションを作成していきます。
StoryBoardsを使用した開発方法については、ここでは詳しく説明しませんので、初心者の方は apple developerサイト や実際のサンプルコードを確認しながらチュートリアルを進めてみてください。
それではさっそく作ってみましょう。

画面レイアウトの作成

今回作成するアプリケーションの画面レイアウトです。

(画面構成)

Get List がタップされると、labelCount にファイル数、textViewList にファイルリストが表示されるように作ります。
以下の部品を配置します。

  • Round Rect Button( UIButton)
    • Get List : コンテンツリストを取得
  • Label( UILabel)
    • labelCount : ファイル数の取得結果を表示
  • Text View( UITextView)
    • textViewList : ファイルリストの取得結果を表示

UIButtonのpushイベントを実装する必要があるので、 FSViewController に定義を追加します(追加する処理については後述します)。

レイアウト要素は FSViewController.h に宣言します:

FSViewController.h

#import <UIKit/UIKit.h>

@interface FSViewController : UIViewController

@property (strong, nonatomic) IBOutlet UILabel *labelCount;
@property (strong, nonatomic) IBOutlet UITextView *textViewList;
- (IBAction)buttonPush:(id)sender;

@end

コードの作成

ファイルリストの取得

ファイルリストの取得は、 command.cgiop=100 を与えることで実現します。
取得対象のフォルダを指定する必要があるので、ここでは DCIM フォルダを指定します。
CGIの実行には、 NSString stringWithContentsOfURL を使用しています。 この関数は、指定されたエンコーディングの文字列(ここではUTF-8)と、発生した例外を返します。

FSViewController.m [Part 1]

#import "FSViewController.h"

@interface FSViewController ()
@end

@implementation FSViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.labelCount.text = @"";
    self.textViewList.text = @"";
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)buttonPush:(id)sender {
    NSError *error = nil;
    self.labelCount.text = @"";
    self.textViewList.text = @"";
    // Get file list
    // Make url
    NSURL *url100 = 
        [NSURL URLWithString:@"http://flashair/command.cgi?op=100&DIR=/DCIM"];
    // Run cgi
    NSString *dirStr = 
        [NSString stringWithContentsOfURL:url100 encoding:NSUTF8StringEncoding error:&error];
    if ([error.domain isEqualToString:NSCocoaErrorDomain]){
        NSLog(@"error100 %@\n",error);
        return;
    }
    // Display results
    self.textViewList.text = dirStr;
  • 26-27行目
    使用するURLです。
    op=100&DIR=/DCIM を設定します。
  • 29-30行目
    CGIが実行されます。
    返される文字のエンコードは、ここでは UTF-8 を使用します。
    encoding:NSUTF8StringEncoding を指定しています。
  • 36行目
    返された文字列(各ファイル情報)を、 textViewList に設定しています。

ファイル数の取得

ファイル数の取得は、 command.cgiop=101 を与えることで実現します。
取得対象のフォルダは、ファイルリストの取得と同じ DCIM フォルダを指定します。

FSViewController.m [Part 2]

    // Make url
    NSURL *url101 = 
        [NSURL URLWithString:@"http://flashair/command.cgi?op=101&DIR=/DCIM"];
    // Run cgi
    NSString *cntStr = 
        [NSString stringWithContentsOfURL:url101 encoding:NSUTF8StringEncoding error:&error];
    if ([error.domain isEqualToString:NSCocoaErrorDomain]) {
        NSLog(@"error101 %@\n",error);
        return;
    }
    // Display results
    self.labelCount.text =[@"Count=" stringByAppendingString:cntStr];
}
  • 2-3行目
    使用するURLです。
    op=101&DIR=/DCIM を設定します。
  • 12行目
    返された文字列(ファイル数)を、 labelCountに設定しています。

実行結果

プログラムが出来上がったら、確認をしてみましょう。
Get List をタップするとファイル数、ファイルリストが表示されます。

(結果)

以上で、コンテンツリストの取得 に関する解説はおわりです。

サンプルコード

ios_tutorial_02.zip (21KB)

このサイトのサンプルコードは 二条項BSDライセンスで提供されています。