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