任何更智能的批量定义常量的方法?

时间:2015-01-05 07:28:57

标签: ios objective-c macros constants data-entry

我希望项目中的所有常量字符串都有宏,我将其分配给它。

数据库字段的格式类似于@"first_name"@"last_name"

我想要的是如下:

#define kFirstName  @"first_name"
#define kLastName   @"last_name" // And so on.

问题:我有超过3500个具有常量字符串的唯一字段。我希望它们中的每一个都被定义为宏。

任何更聪明的方法。我正在考虑手动复制,粘贴和放大编辑每一个。

标记为iOS& Objective-C,因为项目本身是iPad应用程序。

3 个答案:

答案 0 :(得分:2)

一般来说,定义这样的常量是iOS上的方法,所以你就走在了正确的轨道上。

你肯定不会至少打一次输入每个字段。

我会推荐两种方法中的任何一种:

  1. 使用多个.h - 文件来定义所有常量。您可以根据头文件包含的定义对头文件进行分组(例如,UserDefinitions.h中与用户数据相关的所有字段)。这样你至少可以确保不必在代码中的任何地方导入所有常量。使用前缀在这种情况下也会有所帮助,因此请在所有宏名称前加上它们包含的.h - 文件,例如: kUserFirstName以便您第一眼就知道这个常数来自

  2. 在一个(或多个)属性列表中定义所有常量。这使它们易于维护。每次使用其中一个常量时,只确保不加载属性文件,而是在第一次加载文件时缓存该文件。

答案 1 :(得分:0)

使用核心数据时,请考虑使用mogenerator为您创建常量值,您可以为所有属性和关系名称引用。

答案 2 :(得分:0)

最干净的方法是制作一对常量文件(header和main)。创建一个新类(继承自NSObject说的任何东西)调用它的常量。删除@interface和@implementation,所以你有一个空头(#import Foundation / Foundation.h除外)和空主(除了导入头部。)

然后在标题中声明每个

extern NSString *const kFirstName;

并实现每个(在.m文件中)就像这样

NSString *const kFirstName = @"Johnny";

确保将.m文件添加到目标中,然后根据需要导入标题。