编译器指令防御性编程,用于向nsmuatablearray FMDB / EGODB添加整数
当用户尝试将int添加到nsmutablearray时,我想抛出一条警告消息
基本上任何包含非nsstring / nsnumber值的insert语句都会导致运行时崩溃。当你输入%@而不是%d NSLog(int)时,你得到的崩溃完全相同;
崩溃是可以的,但我想向用户抛出一个友好的'致命'消息。
到目前为止,我尝试使用isKindOfClass NSObject进行尝试,但是整数都在下滑。
#define FATAL_MSG "FATAL: object is not an NSObject subclass. Are you using int? use [NSNumber numberWithInt:1] n"
#define VAToArray(firstarg) ({
NSMutableArray* valistArray = [NSMutableArray array];
id obj = nil;
va_list arguments;
va_start(arguments, sql);
@try {
while ((obj = va_arg(arguments, id))) {
if([obj isKindOfClass:[NSObject class]]) [valistArray addObject:obj];
else printf(FATAL_MSG);
}
}
@catch(NSException *exception){
printf(FATAL_MSG);
}
va_end(arguments);
valistArray;
})
- (void)test:(NSString*)sql,... {
NSLog(@“VAToArray:%@”,VAToArray(sql));
}
//然后调用它
[self test:@"str",@"test",nil];
当我打电话给你
[自测:@“str”,2,nil];
抛出错误信息。
没有找到相关结果
已邀请:
1 个回复
谷起