如何将数字转换为字符串。
这是我的代码:
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"1100", @"myKey",nil];
NSString *myData = [NSString stringWithFormat:@"%d", [myDict valueForKey:@"myKey"]];
myData中的输出不是1100,而是一些随机数。这里有什么问题。
答案 0 :(得分:4)
您已存储的数字是字符串形式(请注意引号:@“...”)。
你可能想要的是这样的:
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInteger:1100], @"myKey",nil];
NSString *myData = [NSString stringWithFormat:@"%d", [[myDict objectForKey:@"myKey"] integerValue]];
让我们一步一步地通过该代码:
[NSNumber numberWithInteger:1100]
@"myKey"
@"myKey"
通过myDict
请求密钥[myDict objectForKey:@"myKey"]
的值,这将返回我们之前传递给它的NSNumber实例。[… integerValue]
[NSString stringWithFormat:@"%d", …]
或者你可以跳过第4步并将@“%d”更改为@“%@”,这将打印相同的内容。如果是至少简单的整数值。对于浮点值,您不希望通过@“%@”直接打印NSNumber,因为您无法控制小数精度的显示。
请注意,我们使用的是objectForKey:
,而不是valueForKey:
,原因如下:https://stackoverflow.com/search?q=valueForKey%20objectForKey
您可以通过将代码更改为此来创建相同的字符串:
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"1100", @"myKey",nil];
NSString *myData = [NSString stringWithFormat:@"%@", [myDict objectForKey:@"myKey"]];
原因是,为什么不想这样做:将数字**(或几乎任何其他非文本)值存储为字符串**(通常)是不好的做法**
答案 1 :(得分:2)
%d
(@"1100"
时, NSString
是整数值的说明符。
使用%@
更改说明符并且它将起作用..或者如果您想要放置数字本身,则必须在字典中用Obj-C对象(如NSNumber
)包装它
答案 2 :(得分:0)
其他两个答案都是正确的,但是......
您似乎想要:
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"1100", @"myKey",nil];
NSString *myData = [myDict valueForKey:@"myKey"];
没有必要进行+stringWithFormat:
舞蹈,因为您已经将值存储为字符串(@"..."
表示它是一个字符串)。