plistの改行文字

かんばんわ。

小ネタですが、ずいぶん前にハマってしまったので記載。

plistに改行文字(\n)を含む文字列を設定してたいのですが、
いざ読み出して表示してみると「\n」がそのまま表示されてしまいました。

設定した文字列。

コードはこんな感じ。

    // info-plistのInfoStringに設定されているテキストを取得 
    NSString* str = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"InfoString"];
    label.text = str;

▼実行結果
改行されずに表示されてしまう。

NSStringをstringWithFormat:で初期化すればちゃんと改行されて表示されるので、plistからの読み込みで変になっているようです。
えぇー・・・。


で、よくよく調べたら、改行文字の前に「\」がくっついてしまっているみたいです。
文字列にすると、かんばんわ\\nアルザえもんですってことね。
(何故かくっついてきた)余分なエスケープコードのせいで改行文字が認識されずに通常の文字として認識されているって感じです。

じゃあ問題を解決するのは至って簡単。
「\\n」を「\n」にしてあげれば解決します。

    // info-plistのInfoStringに設定されているテキストを取得 
    NSString* str = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"InfoString"];
    // 「\\n」を「\n」に変換する 
    str = [str stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];
    label.text = str;

▼実行結果

無事改行されました。

こんなので1時間悩んだとか悔しい!ビクンビクン