タグ別アーカイブ: NSString

JSONとオブジェクトを相互変換

iOS5以降では、NSJSONSerializationというオブジェクトが実装されており、これを使うとJSON文字列と、Objective-Cのオブジェクトを容易に相互変換できる。NSJSONSerializationに渡すのはNSStringでなくNSDataである点にだけ気をつければ非常に簡単に利用できる。※iOS4.3以前ではNSJSONSerializationは利用できないのでご注意下さい

//文字列をObjective-Cのオブジェクトに変換
NSError* error;
NSDictionary* json = [NSJSONSerialization
    JSONObjectWithData:
        [@"[1,2,3,[\"foo\",\"bar\"]]"
        dataUsingEncoding:NSUTF8StringEncoding]
    options:kNilOptions
    error:&error];
NSLog(@"%@ %@", json, error);

//Objective-CのオブジェクトをJSONに変換
NSData *jsonData =
    [NSJSONSerialization dataWithJSONObject:json
                         options:kNilOptions error:&error];
NSLog(@"%@ %@"
    ,[[NSString alloc]
        initWithData:jsonData
        encoding:NSUTF8StringEncoding]
    ,error);

実行結果

末尾のnullは、エラーが発生しなかったということを表しています。

2012-01-27 16:35:43.813 AppName[22778:fb03] (
    1,
    2,
    3,
        (
        foo,
        bar
    )
) (null)

2012-01-27 16:35:43.815 AppName[22900:fb03] [1,2,3,["foo","bar"]] (null)

Share and Enjoy

文字列の連結

Objective-Cで文字列を連結する場合はNSStringのstringByAppendingStringメソッドを使う方法もあるが、stringWithFormatを使ったほうが柔軟性があって便利。stringWithFormatを使えば、間にスペースを入れたり、3つ以上の文字列を連結する場合も簡単に記述できる。

NSString * str1 = @"文字列1";
NSString * str2 = @"文字列2";
   
NSString * strA = [str1 stringByAppendingString:str2];
NSString * strB = [NSString stringWithFormat:@"%@%@", str1, str2];

注意: stringWithFormatで指定するフォーマットでは、NSString型の文字列は%@を指定します。%sではありません。

Share and Enjoy