处理 Objective-C 中的整数
Handling integers in Objective-C
一位开发人员告诉我,在 Objective-C 中使用整数可能会令人沮丧,因此他更喜欢直接使用 JSON 消息中返回的 ID 的字符串,以节省频繁的转换介于整数和字符串之间。换句话说,他希望 API 将这些 ID 作为字符串返回,即使它们在服务器上本来就是整数。他还说你不能在 Objective-C 中的 dictionary/map 这样的东西中使用整数,这样字符串又更好(他建议我们应该只使用 '1'
而不是 1
作为数据库表中的主键,使两边的数据类型一致)。
我对 Objective-C 知之甚少,但我很难相信这种基本的东西在语言中会如此烦人。据我所知,Objective-C 中有不同类型的 'numbers':
int
、float
、double
、long
和 short
(C 原语)
NSInteger
、NSUInteger
、CGFloat
(Objective-C 个基元)
编辑:NSNumber
不是原始类型,而是存储和检索不同原始值的包装对象类型。谢谢@rmaddy
后一种类型似乎在不同的底层架构中标准化了 APIs,这样开发人员就不需要关心不同硬件上的 32 位与 64 位整数之类的事情。
回到我朋友的抱怨,对于处理从网络返回的整数ID API,应该使用哪种数据类型来存储它们并在数据结构(如字典)中使用它们?所说的转换是不可避免的吗?
你的朋友已经过时几年了。它曾经像他们想象的那样糟糕(尽管我仍然不同意因此而将所有内容都放入字符串中)。
现代 Objective C 语法已全部修复。这是一本字典,里面有一些数字:
NSUInteger answer = 42;
NSDictionary * dict = @{@"answerCount": @1,
@"value": @(answer)};
当然,这不是人们所能选择的最好的语法,但它非常可行。
此外,还有许多库可用于从线路中获取数据、解析 JSON 并将结果分解为模型对象。这样你就永远不会真正处理原始 JSON 字典。我强烈建议您在采用有线格式之前研究这些选项。
一位开发人员告诉我,在 Objective-C 中使用整数可能会令人沮丧,因此他更喜欢直接使用 JSON 消息中返回的 ID 的字符串,以节省频繁的转换介于整数和字符串之间。换句话说,他希望 API 将这些 ID 作为字符串返回,即使它们在服务器上本来就是整数。他还说你不能在 Objective-C 中的 dictionary/map 这样的东西中使用整数,这样字符串又更好(他建议我们应该只使用 '1'
而不是 1
作为数据库表中的主键,使两边的数据类型一致)。
我对 Objective-C 知之甚少,但我很难相信这种基本的东西在语言中会如此烦人。据我所知,Objective-C 中有不同类型的 'numbers':
int
、float
、double
、long
和short
(C 原语)NSInteger
、NSUInteger
、CGFloat
(Objective-C 个基元)
编辑:NSNumber
不是原始类型,而是存储和检索不同原始值的包装对象类型。谢谢@rmaddy
后一种类型似乎在不同的底层架构中标准化了 APIs,这样开发人员就不需要关心不同硬件上的 32 位与 64 位整数之类的事情。
回到我朋友的抱怨,对于处理从网络返回的整数ID API,应该使用哪种数据类型来存储它们并在数据结构(如字典)中使用它们?所说的转换是不可避免的吗?
你的朋友已经过时几年了。它曾经像他们想象的那样糟糕(尽管我仍然不同意因此而将所有内容都放入字符串中)。
现代 Objective C 语法已全部修复。这是一本字典,里面有一些数字:
NSUInteger answer = 42;
NSDictionary * dict = @{@"answerCount": @1,
@"value": @(answer)};
当然,这不是人们所能选择的最好的语法,但它非常可行。
此外,还有许多库可用于从线路中获取数据、解析 JSON 并将结果分解为模型对象。这样你就永远不会真正处理原始 JSON 字典。我强烈建议您在采用有线格式之前研究这些选项。