编译时声明数组中的所有字符串都对应于对象的属性?

时间:2016-01-13 20:07:32

标签: ios objective-c

有没有办法进行编译时断言,数组中的所有字符串都对应于对象属性的名称?例如,让我说我有以下内容:

#define PROPERTY_NAMES @[@"firstName", @"lastName", @"age", @"city"]

@interface AARandomClass : NSObject

@property NSString *firstName;
@property NSString *city;
@property NSString *goofBall;

@property NSNumber *age;

@end

我希望这不要编译(失败某种断言),因为@"lastName"PROPERTY_NAMES中,但不是AARandomClass的属性。有没有办法做到这一点?

此外,我还要单独将编译失败,因为有一个属性goodBall,它是一个属性但不在PROPERTY_NAMES中。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

如果没有编写一个可以在编译时执行的脚本,那么你想要的就是不可能的,这就是你能得到的。

您可以使用NSStringFromSelector,如果提供的选择器不存在,则会导致警告时间错误。它不会检查它属于某个类。

#define PROPERTY_NAMES @[NSStringFromSelector(@selector(firstName)), ...]