gpt4 book ai didi

iphone - 在运行时修改 objective-c 中的常量

转载 作者:行者123 更新时间:2023-11-28 18:24:29 25 4
gpt4 key购买 nike

我正在尝试解决以下问题。我的头文件中有以下常量:

#define PREFS_MY_CONSTANT_1 @"bla1"
#define PREFS_MY_CONSTANT_2 @"bla2"
#define PREFS_MY_CONSTANT_3 @"bla3"
...

在我的一个函数中,我想根据用户输入将这些字符串之一打印到 UIbutton,所以假设用户输入“1”,我会显示 bla1。我没有创建一个巨大的开关(我有 100 个),而是在寻找一种方法将常量与保存用户输入的变量结合起来,所以理想情况下是这样的:

NSInteger input;
[button setTitle:PREFS_MY_CONSTANT_{$input} forState: UIControlStateNormal];

这样的事情可能吗?解决这个问题的最佳方法是什么?

最佳答案

我将定义一个 NSString 文字的普通 C 数组:

static NSString *prefs[] = {
@"foo",
@"bar",
@"baz",
};

要么使用基于 0 的索引,要么在您不会使用的第一个条目中放置一些内容,例如 nil。然后 prefs[input] 会给你你想要的字符串。

(最后一个条目后的逗号不是错误。它允许您添加更多条目而无需先添加逗号。它使编辑更容易,并且使修订历史更易于阅读。)

静态数组中元素的数量可以在编译时确定。我通常为此使用一个宏:

#define ARRAYSIZE(array) (sizeof(array) / sizeof(array[0]))

然后您可以将用户输入与 ARRAYSIZE(prefs) 进行比较,以确保它保持在范围内。

关于iphone - 在运行时修改 objective-c 中的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13061803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com