objective-c - 在 Objective-C 中处理整数

标签 objective-c numbers integer primitive nsinteger

一位开发人员告诉我,在 Objective-C 中处理整数可能会令人沮丧,因此他更喜欢直接处理 JSON 消息中返回的 ID 字符串,以节省整数和字符串之间的频繁转换。换句话说,他希望 API 将这些 ID 作为字符串返回,即使它们在服务器上是 native 整数。他还说你不能在 Objective-C 的 dictionary/map 中使用整数,这样字符串更好(他建议我们应该只使用 '1' 而不是 1 作为数据库表中的主键,以便两边的数据类型一致)。

我对 Objective-C 知之甚少,但我很难相信这种基本的东西在这门语言中会如此烦人。据我所知,Objective-C 中有不同类型的“数字”:

  • intfloatdoublelongshort(C原语)
  • NSIntegerNSUIntegerCGFloat(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/

相关文章:

ios - SKSpriteNode - 创建圆角节点?

python - 如何在Python中生成具有大量小数的随机数?

javascript - "num & 8"、 "num >> 8"和 "num >> 8 & 64"在 javascript 中是什么意思?

java - 将十六进制转换为字符串

python - 当由 '..' Python 分隔时,将两个整数附加到列表

integer - 寻找 "simple"整数线性规划源代码/伪代码

iphone - iOS图像比较

ios - 为什么 Swift 中 CFStringEncodings 没有 UTF8?

python - 在 Python 中获取整数的一部分

ios - 如何在 Objective c 的 UI 导航栏上更改 Font Awesome 的颜色