在 NSDictionary 中设置值时,@"1.5" 和 @(1.5) 有什么区别?
What is the difference between @"1.5" and @(1.5) while setting the value in NSDictionary?
在iPhone项目中,
当时我正在设置字典中的值,
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)?
你有两个问题,最好是一个问题。
但至于区别,@"2.5"
是一个 NSString
,而 @(2.5)
是一个 NSNumber
。文本数据和数字数据有很大的区别。
至于为什么需要 NSNumber
而不是 NSString
很明显:字距调整是一个数值。
使用@() 语法,您可以装箱任意 C 表达式。这使得将基本算术计算转换为 NSNumber
对象变得微不足道,见下文:
double x = 24.0;
NSNumber *result = @(x * .15);
NSLog(@"%.2f", [result doubleValue]);
您也可以将 NSNumber
对象引用为 @"" 字符串,但不能像上面的示例那样进行计算。在你的情况下,两者都是可以接受的,但这里的计算会有所不同。
当你使用
@"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"];
@(2.8) 是一种 NSNumber。
@"2.8" 是一种 NSString。
两者的类型和值都不一样。
在iPhone项目中,
当时我正在设置字典中的值,
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)?
你有两个问题,最好是一个问题。
但至于区别,@"2.5"
是一个 NSString
,而 @(2.5)
是一个 NSNumber
。文本数据和数字数据有很大的区别。
至于为什么需要 NSNumber
而不是 NSString
很明显:字距调整是一个数值。
使用@() 语法,您可以装箱任意 C 表达式。这使得将基本算术计算转换为 NSNumber
对象变得微不足道,见下文:
double x = 24.0;
NSNumber *result = @(x * .15);
NSLog(@"%.2f", [result doubleValue]);
您也可以将 NSNumber
对象引用为 @"" 字符串,但不能像上面的示例那样进行计算。在你的情况下,两者都是可以接受的,但这里的计算会有所不同。
当你使用
@"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"];
@(2.8) 是一种 NSNumber。
@"2.8" 是一种 NSString。
两者的类型和值都不一样。