有没有办法进行编译时断言,数组中的所有字符串都对应于对象属性的名称?例如,让我说我有以下内容:
#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
中。有没有办法做到这一点?
答案 0 :(得分:0)
如果没有编写一个可以在编译时执行的脚本,那么你想要的就是不可能的,这就是你能得到的。
您可以使用NSStringFromSelector
,如果提供的选择器不存在,则会导致警告时间错误。它不会检查它属于某个类。
#define PROPERTY_NAMES @[NSStringFromSelector(@selector(firstName)), ...]