当我使用此链接获取TF2的项目架构(http://api.steampowered.com/IEconItems_440/GetSchema/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&language=en)时,在attributes属性下,有一个TF2游戏中每个属性的列表。
例如,这是一个这样的属性:
{
"name": "gesture speed increase",
"defindex": 201,
"attribute_class": "mult_gesture_time",
"description_string": "+%s1% faster taunt speed on wearer",
"description_format": "value_is_percentage",
"effect_type": "positive",
"hidden": false,
"stored_as_integer": false
},
在"description_string"
属性下,您可以看到字符串使用了格式说明符,但是如何在xcode中实现它。 xcode中的%s1不是字符串的正确格式说明符,因此如何更改它?
编辑:我正在尝试做的事情主要是使用[NSString stringWithFormat:@"+%s1% faster taunt speed on wearer", @"25"]
。问题是,当我NSLog这个语句时,数字不显示,而是一些奇怪的符号。我希望声明“佩戴者的嘲讽速度提高25%”,那么我该如何实现呢?
答案 0 :(得分:1)
我认为你最好的方法是放弃stringWithFormat:
否则你必须转义像%
这样的字符。
您可以执行以下任一操作:
单次出现%s1
如果您保证%s1
只会在description_string
中出现一次,您只需使用:
NSString *description = @"+%s1% faster taunt speed on wearer";
description = [description stringByReplacingOccurrencesOfString:@"%s1" withString:@"25"];
多次出现%s1
NSString *description = @"+%s1% faster taunt speed on wearer and +%s1 XP";
NSArray *values = @[@"25", @"1000"];
NSRange range = NSMakeRange(0, description.length);
NSUInteger index = 0;
while (range.location != NSNotFound) {
range = [description rangeOfString:@"%s1" options:0 range:range];
if (range.location != NSNotFound) {
NSString *value = values[index];
description = [description stringByReplacingCharactersInRange:range withString:value];
range = NSMakeRange(range.location + value.length, description.length - (range.location + value.length));
}
index++;
}