libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

NSURLとNSURLConnection (1/6)

作成:2011-02-23 09:32
更新:2011-11-13 21:56

■NSURLでファイルをロードする

URL」というのは、「Uniform Resource Locator」の略で、インターネットの世界にある、さまざまな情報リソース(まぁ、ファイルと考えていいでしょう)を指定するための統一された記述方式のことです。もっとも身近なものは、Webサイトのアドレスですね。「http://google.com/」というようなアドレスは、URLの記述スタイルを使ってアクセス先を指定しているものなのです。が、これはあくまで一例であり、Webサイト以外にもさまざまなリソースを指定するのにURLは用いられています。

このURLをObjective-Cで扱う場合、「NSURL」というクラスを利用します。これには、インスタンスを生成するためのコンビニエンスコンストラクタが多数揃っていますが、とりあえず以下の2つだけ覚えておけばすぐに利用出来るようになるでしょう。
NSURL *変数 = [NSURL URLWithString:《NSString*》];
NSURL *変数 = [NSURL fileURLWithPath:《NSString*》];
前者は、一般的なインターネット上のアドレスを示すテキストを引数に指定してNSURLを作成します。後者は、ファイルのパスを引数に指定して、ローカルボリュームにあるファイルを示すためのNSURLを作成します。NSURLは、ネットワーク上のリソースのみならず、ローカルボリュームにあるファイルなどを扱うのにも使えるんですね。

■URLからテキストをロードする

NSURLのもっともシンプルで便利な使い方は、「指定したアドレスからテキストを読み込む」ということでしょう。これは、実はNSStringのメソッドで簡単に行うことができます。
NSString* 変数 = [NSString stringWithContentsOfURL:《NSURL*》
        encoding:エンコーディング名 error:《NSError**》];
引数には、NSURL、エンコーディングの種類、NSErrorといったものが用意されます。エンコーディングの種類は、既に説明してありますが(http://libro99.appspot.com/index3?id=561007&page=5&label=objective-cObjective-Cに用意されている列挙型の値を使って指定します。またNSErrorは、例によってポインタのポインタで渡し、何かあればこれにエラー情報が保存されるようにしておきます。

では、簡単な利用例をあげておきましょう。ローカルボリュームとネットワークのアドレスからそれぞれテキストを読み込んで表示するサンプルです。ここでは、デスクトップのdata.txtファイルと、http://www.apple.com/のWebページのテキストをそれぞれ読み込んでNSStringを生成しています。どちらもほとんど似たような形でデータを取り出せることがわかるでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSString* path = [NSHomeDirectory()
                          stringByAppendingPathComponent:
                          @"Desktop/data.txt"];
        NSURL* url = [NSURL fileURLWithPath:path];
        NSError* err;
        NSString* str = [NSString
                         stringWithContentsOfURL:url 
                         encoding:NSUTF8StringEncoding error:&err];
        NSLog(@"%@",str);
        
        NSString* address = @"http://www.apple.com/";
        NSURL* url2 = [NSURL URLWithString:address];
        id str2 = [NSString 
                   stringWithContentsOfURL:url2
                   encoding:NSUTF8StringEncoding error:&err];
        NSLog(@"%@",str2);
    }
    return 0;
}
※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る