我有以下示例代码,用于将警报视图显示为宏
#define SHOW_ALERT(title,msg,del,cancel,other) \
do { \
UIAlertView *_alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:del cancelButtonTitle:cancel otherButtonTitles:other,nil]; \
[_alert show]; \
} while(0);
致电使用
SHOW_ALERT(@"Error!", @"Please Check!", nil, @"Ok", nil)
我正在尝试根据我的字符串传递来处理错误消息
SHOW_ALERT_STATUSCODE(@"404") // give error
这是我试过的
#define SHOW_ALERT_STATUSCODE(code) \
do { \
\NSString *errorMsg=@"";\
if([Status_code isEqualtoString:@"404"])\
\{errorMsg=@"Page Not Found";}\
\else if([Status_code isEqualtoString:@"401"])\
\{errorMsg=@"Authentication Failed";}\
\
UIAlertView *_alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:errorMsg delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok",nil]; \
[_alert show]; \
} while(0);
但它给我以下错误
答案 0 :(得分:3)
在某些行的开头有虚假的反斜杠:
\NSString *errorMsg=@"";\
\{errorMsg=@"Page Not Found";}\
\else if([Status_code isEqualtoString:@"401"])\
您也可以传递code
,但请测试Status_code
。
我建议扔掉那些不合时宜的垃圾,而是创建一个易于阅读和维护的方法:
- (void)showAlertForStatusCode:(NSUInteger)code
{
NSString errorMsg = nil;
if (code == 404)
errorMsg = @"Page Not Found";
else if (code == 401)
errorMsg = @"Authentication Failed";
else
errorMsg = @"Unknown error";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert"
message:errorMsg
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"Ok", nil];
[alert show];
}
答案 1 :(得分:0)
尝试这个。
#define SHOW_ALERT_STATUSCODE(code) \
\
do { \
\
NSString *errorMsg=@""; \
if([code isEqualToString:@"404"]) \
{\
errorMsg=@"Page Not Found"; \
}\
else if([code isEqualToString:@"401"]) \
{\
errorMsg=@"Authentication Failed"; \
}\
\
UIAlertView *_alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:errorMsg delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok",nil]; \
\
[_alert show]; \
} while(0); \
除了前导'\'之外,您的代码没有任何问题。
答案 2 :(得分:0)
我建议不要使用宏来制作复杂的代码。
只需使用静态方法。
__unused static void showAlertForStatusCode(NSUInteger code)
{
NSString *errorMsg = nil;
if (code == 404)
errorMsg = @"Page Not Found";
else if (code == 401)
errorMsg = @"Authentication Failed";
else
errorMsg = @"Unknown error";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert"
message:errorMsg
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"Ok", nil];
[alert show];
}
您可以使用对象引用或使用self来调用此静态方法。 EXA: -
showAlertForStatusCode(400);
或使用
使用我在项目中使用的宏
#define AlertWithMessage(msg) [[[UIAlertView alloc] initWithTitle:@"Titile" message:msg delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil] show]