将字符串格式说明符(%@、%d 等)保存在 NSString 中,以供将来占位符使用



>我有一个很长的字符串,我想从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"];

你描述的是一个模板。您希望将占位符保留在将用数据填充的字符串中。虽然您可以通过字符串使用 %@ 和 %d,但随着字符串变得越来越复杂,这变得越来越困难。你可能想使用像Mustache这样的模板库来实现Objective-C。这将允许您编写如下表达式:

Hello {{SomeVariable}}

您所要做的就是使用与要呈现的数据对应的键传入一个NSDictionary。因此,对于上面的示例,您可以执行以下操作:

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

这将生成一个result字符串Hello World

最新更新