"NSString stringWithFormat:" - 多次访问相同的参数?

Tho*_*yer 26 objective-c string-formatting nsstring

当我使用字符串格式时,我可以多次访问一个参数而不再传递它吗?

例:

NSString *parameter1 = @"1";
NSString *parameter2 = @"2";

NSString *myString;
myString = [NSString stringWithFormat:@"I want to print parameter1 here: %@, parameter2 here: %@ and now access parameter1 again: %@ _without_ passing it again.",parameter1, parameter2, parameter1];
Run Code Online (Sandbox Code Playgroud)

有没有办法再次访问第一个参数而不再写",parameter1"?

ham*_*ene 59

是的,使用位置参数:

// prints: foo bar foo bar
NSLog(@"%@", [NSString stringWithFormat:@"%2$@ %1$@ %2$@ %1$@", @"bar", @"foo"]);

// NSLog supports it too
NSLog(@"%2$@ %1$@ %2$@ %1$@", @"bar", @"foo");
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在格式字符串中,您需要引用参数列表中提供的所有参数.例如.以下代码将在运行时导致错误,因为第一个位置参数在格式字符串中未使用:`[NSString stringWithFormat:@"%2 $ @",@"bar",@"foo"]` - 请参阅http: //stackoverflow.com/questions/2946649/nsstring-stringwithformat-swizzled-to-allow-missing-format-numbered-args (6认同)