首先,我对问题标题感到抱歉。
现在,问题是: 我正在编写一个 iPhone 应用程序,它可以读取罗盘值并显示设备面向的方向名称。在撰写本文时,我是这样做的:
switch (trueHeadingRounded) {
case 23 ... 68:
cardinalDirection = @"northeast";
break;
case 69 ... 114:
cardinalDirection = @"east";
break;
//ad infinitum
如何缩短这部分?必须有更好的方法。
最佳答案
您可以执行以下操作:
- 创建一个算术函数,根据角度给出一个数字。该数字介于 0 和 7 之间(0 表示东北,1 表示东,依此类推)。看起来像
(x - 23)/45
或类似的东西。 - 然后创建一个映射数组,为您提供数字方向的名称。
[0] => '东北'、[1] => '东部'等
- 在数组中查找要返回的名称。
返回mappingArray[indexFromAngle(x)]
关于objective-c - 代替 switch-case,更有效地选择字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984633/