在iPhone项目中,
当我在字典中设置Value时,
NSMutableDictionary*dictionary=[[NSMutableDictionary alloc] init];
[dictionary setValue:@(2.8) forKey:@"Why"];
和
NSMutableDictionary*dictionary=[[NSMutableDictionary alloc] init];
[dictionary setValue:@"2.8" forKey:@"Why"];
我的问题是为什么不是@“2.5”和@(2.5)?
答案 0 :(得分:4)
你有两个问题,最好只提出一个问题。
但至于差异,@"2.5"
是NSString
,其中@(2.5)
是NSNumber
。文本和数字数据之间存在很大差异。
至于为什么你需要一个NSNumber
而不是NSString
是显而易见的:字距调整是一个数值。
答案 1 :(得分:2)
使用@()语法可以装入任意C表达式。这使得将基本算术计算转换为NSNumber
个对象变得微不足道,如下所示:
double x = 24.0;
NSNumber *result = @(x * .15);
NSLog(@"%.2f", [result doubleValue]);
您也可以将NSNumber
对象称为@“”字符串,但无法进行上述示例计算。在你的情况下,两者都是可以接受的,但这里的计算有所不同。
答案 2 :(得分:0)
使用时
@“2.5”它的行为就像一个字符串
NSMutableDictionary*dictionary=[[NSMutableDictionary alloc] init];
[dictionary setValue:@"2.8" forKey:@"Why"];;
NSString *a = [dictionary ValueforKey:@"Why"];
但是当你使用@(2.8)时,它的行为就像一个NSNumber
NSMutableDictionary*dictionary=[[NSMutableDictionary alloc] init];
[dictionary setValue:@(2.8) forKey:@"Why"];;
NSNumber *a = [dictionary ValueforKey:@"Why"];
答案 3 :(得分:0)
@(2.8)是一种NSNumber。
@" 2.8"是一种NSString。
两者之间的类型和价值都不同。