コンテンツリストの取得

このチュートリアルではコンテンツリストの取得方法について学びます。 今回使用する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ライセンスで提供されています。