将文本链接到整数 Objective C

Linking Text to an Integer Objective C

此 post 的目标是找到一种更有效的方法来创建此方法。现在,随着我开始添加越来越多的值,我将拥有一个非常混乱和令人困惑的应用程序。感谢您的帮助!

我正在制作一个锻炼应用程序并为每个锻炼分配一个整数值。例如:

其中数字是exersiceInt
01 是高膝盖
02 是开合跳
03 原地慢跑
等等

我正在制作它,所以有一个随机化锻炼的功能。为此,我使用以下代码:

-(IBAction) setWorkoutIntervals {
        exerciseInt01 = 1 + (rand() %3);
        exerciseInt02 = 1 + (rand() %3);
        exerciseInt03 = 1 + (rand() %3);
}

所以基本上锻炼间隔将首先是随机锻炼(在高膝、开合跳和原地慢跑之间)。我想做的是制作一个定义以下内容的通用程序,这样我就不必不断地对所有内容进行硬编码。

现在我有:

-(void) setLabelText {
if (exerciseInt01 == 1) {
        exercise01Label.text = [NSString stringWithFormat:@"High Knees"];
    }
if (exerciseInt01 == 2) {
        exercise01Label.text = [NSString stringWithFormat:@"Jumping Jacks"];
    }
if (exerciseInt01 == 3) {
        exercise01Label.text = [NSString stringWithFormat:@"Jog in Place"];
    }
}

一旦我开始为每次锻炼指定图像并开始添加锻炼,我就已经知道这会变得非常混乱。此外,我的计划是为 exercise02Labelexercise03Label 等放置相同的代码,这将变得非常多余,而且可能没有必要。

如果有什么办法可以说,我想的就完美了

exercise01Label.text = exercise01Int; (我想说的是,根据当前整数值,Label的文本等于Jumping Jacks)

我怎样才能使所有内容都只声明一次并使代码不那么混乱和冗长?

一个简单的开始方法是将练习名称放在一个数组中。然后您可以通过索引访问名称。例如 - exerciseNames[exerciseNumber]。您还可以在数组(整数)中制作练习列表。所以你会得到;练习名称[练习表[i]];例如。最终你会想要一个对象来定义一个练习,这样你就可以包括图像、视频、计数、持续时间等。

您可以探索三件事来简化您的代码:

1.从零开始数

如果您从零开始数数,许多事情会变得更容易。一个简单的例子是,如果你的第一个练习编号为 0,那么你的随机计算将只是 rand() % 3(顺便说一句,查找统一随机数,有更好的方法来获得随机数)。

2。了解枚举

枚举 是一种具有一组命名文字值的类型。在 (Objective-)C 中,您还可以将它们视为命名整数值的集合。例如,您可以声明:

typedef enum
{
   HighKnees,
   JumpingJacks,
   JogInPlace,
   ExerciseKindCount
} ExerciseCount;

ExerciseCount 声明为具有 4 个值的新类型。其中每一个都相当于一个整数,这里 HighKnees 相当于 0 而 ExerciseKindCount 相当于 3 - 这应该让你想到第一件事,从零开始计数......

3。发现数组

array 是有序的项目集合,其中每个项目都有一个 index - 通常是整数或枚举值。在 (Objective-)C 中有两种基本类型的数组:C 风格和对象风格,由 NSArrayNSMutableArray 表示。例如这里是一个简单的 C 风格数组:

NSString *gExerciseLabels[ExerciseKindCount] =
   {  @"High Knees",
      @"Jumping Jacks",
      @"Jog in Place"
   }

你现在可能已经猜到了,上面数组的第一项的索引为 0,从零开始计数...

探索这三件事应该可以快速向您展示简化代码的方法。稍后您可能希望探索结构和对象。

HTH