« ネットワーク上のPCが見れない!?(汗) | トップページ | 『WACOM FAVO CTE-400』のペンが壊れたみたい…。(T_T) »

2009年12月27日 (日)

『CFURLRef path』を簡単に文字列にしたいのだが…

『iPhone』のアプリケーションをでファイルのアクセスエラーを
『printf』で出力したい!

なんて思った…。

- ( id )initWithContents:( CFURLRef )path
{
    if( AudioServicesCreateSystemSoundID( path, &soundID ) != kAudioServicesNoError )
    {
        NSLog( @"erroe path: %@", path );
    }
}

で、ログ出るけど…

『printf』が好きなんじゃい!

結構便利だしね。

じゃあどうするか…

『CFURLRef path』から直接文字列は、取れないっぽい…。

『CFStringRef』までコンバートしてさらに
メモリを確保して文字列をコピーするのに
『CFStringGetCString』を使うのを見かけるが…

こんな奴…

- ( id )initWithContents:( CFURLRef )path
{
    /* 省略! */
    CFStringRef    a    = CFURLGetString( path );
    int            l    = CFStringGetLength( a ) + 1;
    char        *s    = ( char* )malloc( l );
    CFStringGetCString( a, s, l, kCFStringEncodingUTF8 );
    printf( "erroe path: %s\n", s );
    free( s );
}

でも…

もっと直接的に頂きたい!

もっと簡便に頂きたい!

もっと楽に頂きたい!

でツラツラ探していくと…。

どうやら『CFStringRef』までコンバートすれば、何とか成っぽい。

と言うのも『CFStringRef』は、『NSString』にキャストできるっぽい。

で、さらに『cString』で…

もとい『UTF8String』で文字列を直接引っ張り出せるっぽい…。

で、やってみた。

- ( id )initWithContents:( CFURLRef )path
{
    /* 省略! */
    printf( "erroe path: %s\n", [( NSString* )CFURLGetString( path ) UTF8String] );
}

おお!

出来たじゃん!

もしかしたら、当たり前なのかもしれないけど…

まだまだ初心者なんで…。

永遠の初心者…

って駄目ですか?

|

« ネットワーク上のPCが見れない!?(汗) | トップページ | 『WACOM FAVO CTE-400』のペンが壊れたみたい…。(T_T) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 『CFURLRef path』を簡単に文字列にしたいのだが…:

« ネットワーク上のPCが見れない!?(汗) | トップページ | 『WACOM FAVO CTE-400』のペンが壊れたみたい…。(T_T) »