如果这是一个菜鸟问题,我道歉。
我一直关注有关mapkit的this教程,我偶然发现了这行代码
NSString *json = [NSString stringWithFormat:formatString,
centerLocation.latitude,
centerLocation.longitude,
0.5 * METERS_PER_MILE];
至少对我来说这是不寻常的原因是它缺少了包含%@标志的nsstring。该教程声称我们正在将纬度和经度信息添加到json中。
但是当我打印出formatString和json时,输出是相同的。
我以前从未见过以这种方式使用过的nsstrings。是否有隐藏的变量被设置?
有人可以向我解释这个nsstring对象(名为json)是如何包含这4个参数的吗?
答案 0 :(得分:2)
代码中的其他地方,formatString必须定义如下:
NSString *formatString = @"latitude=%f, longitude=%f, %f = half the number of meters in a mile";
确保您的测试如下所示:
NSLog(@"the format is %@ and the json is %@", formatString, json);
他们不应该看起来一样。它们看起来相同的唯一方法是格式字符串不引用任何格式说明符,如下所示:
NSString *formatString = @"I'm a silly format with no percent format specifiers";
来自Apple的
答案 1 :(得分:1)
formatString
实际上包含%@
。可能是这样的:
NSString *formatString = @"lat: %f | lon: %f | half-meters-per-mile: %f";
NSString *json = [NSString stringWithFormat:formatString,
centerLocation.latitude,
centerLocation.longitude,
0.5 * METERS_PER_MILE];
(请注意,替换(%f
)可能不正确,我猜)
至于它如何包含这四个参数,第一个参数之后的所有内容都是您想要添加到字符串中的值。第一个是一个字符串,说明放置这些值的位置。
答案 2 :(得分:1)
如果你查看教程,下面的代码行写在你发布的内容之上 -
NSString *jsonFile = [[NSBundle mainBundle] pathForResource:@"command" ofType:@"json"];
NSString *formatString = [NSString stringWithContentsOfFile:jsonFile encoding:NSUTF8StringEncoding error:nil];
从此处创建格式字符串,此文件将在教程的资源文件夹中提供。