objective-c - 代替 switch-case,更有效地选择字符串

标签 objective-c switch-statement

首先,我对问题标题感到抱歉。

现在,问题是: 我正在编写一个 iPhone 应用程序,它可以读取罗盘值并显示设备面向的方向名称。在撰写本文时,我是这样做的:

switch (trueHeadingRounded) {
    case 23 ... 68:
        cardinalDirection = @"northeast";
        break;
    case 69 ... 114:
        cardinalDirection = @"east";
        break;
    //ad infinitum

如何缩短这部分?必须有更好的方法。

最佳答案

您可以执行以下操作:

  1. 创建一个算术函数,根据角度给出一个数字。该数字介于 0 和 7 之间(0 表示东北,1 表示东,依此类推)。看起来像 (x - 23)/45 或类似的东西。
  2. 然后创建一个映射数组,为您提供数字方向的名称。 [0] => '东北'、[1] => '东部'等
  3. 在数组中查找要返回的名称。 返回mappingArray[indexFromAngle(x)]

关于objective-c - 代替 switch-case,更有效地选择字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984633/

相关文章:

iphone - 更改特定行颜色 uipicker

java - 为什么没有收到(UDP 多播)数据包?

Java JApplet - 尝试切换在外部类中创建的 JPanel

java - 带开关的 Android 编码(字符串)

c - 带有大小写开关和枚举的工作日

clojure - Lein 检查 : case has int tests, 但测试的表达式不是原始的

objective-c - 如何在断点处查看Objective-c(等效汇编代码)?

objective-c - NSTableView 切换列

javascript - 如何判断 stringByEvaluatingJavaScriptFromString 求值过程完成?

java - Java中的最大枚举元素数