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