2

URLから取得して、アプリの起動時に保存したい長い文字列があります。後で、その文字列に個々の値を挿入したいと思います。

私はこのようなことをしたいです:

NSString *numberLine = @"1 %@ 3 %@ 5 %@";

//... (later) ...

NSString *final = [NSString stringWithFormat:numberLine, @"two", @"four", @"six"]; 

NSLog(@"%@", final); //Should output "1 two 3 four 5 six"

以前にに保存さ@"two"れたプレースホルダーにを挿入したい。%@numberLine

このようなことを達成するための良い方法はありますか?

これまでのところ、私の唯一の考えは次のようなことをすることです。

NSString *script = @"width = PLACEHOLDERpx";
script = [script stringByReplacingOccurrencesOfString:@"PLACEHOLDER" withString:@"12"];
4

1 に答える 1

4

あなたが説明しているのはテンプレートです。データが入力される文字列にプレースホルダーを残したいとします。文字列が複雑になるにつれて難しくなる文字列を介して%@と%dを使用することもできます。MustacheforObjective -Cのようなテンプレートライブラリを使用することをお勧めします。これにより、次のような式を記述できます。

Hello {{SomeVariable}}

あなたがしなければならないのはあなたがNSDictionaryレンダリングしたいデータに対応するキーでを渡すことです。したがって、上記の例では、次のようにすることができます。

NSString *result = [GRMustacheTemplate renderObject:[NSDictionary dictionaryWithObject:@"World" forKey:@"SomeVariable"];
                                         fromString:@"Hello {{SomeVariable}}"
                                              error:NULL];

これにより、result文字列が生成されますHello World

于 2012-06-01T00:47:59.123 に答える