我有3个文本字段的视图:
要求是,要检查这些密码的有效性,如果条件不满足,将会弹出警报视图。
我使用0
- if
,但似乎不合适,并尝试使用else
- switch
。但它仍然无法奏效。
我的代码:
case
}
答案 0 :(得分:1)
在Objective-C中,switch
语句中的参数必须是整数。
使用NS_ENUM
宏将枚举声明为整数
typedef NS_ENUM (NSInteger, ErrorCase) {
oldPasswordCase,
newPasswordLength,
newPasswordCheck,
};
然后声明错误变量
ErrorCase error;
正如Mateusz的答案中所提到的,你必须使用isEqualToString
来比较两个字符串。
编辑:您的if - else
链并非详尽无遗,可能会导致意外行为。添加默认none
案例并将其分配给error
,或确保if - else
链考虑所有案例(感谢Idali提供的提示)。
答案 1 :(得分:1)
此代码检查两个指针是否相同而不是两个字符串:
[textFromBox2 isEqualToString: textFromBox3]
比较你应该使用的字符串:
MAX_INT
答案 2 :(得分:0)
我认为如果没有枚举,你可以这样做:
NSString *textFromBox1 = [stringArray objectAtIndex:0];
NSString *textFromBox2 = [stringArray objectAtIndex:1];
NSString *textFromBox3 = [stringArray objectAtIndex:2];
NSString *alertString = nil;
if ([textFromBox1 length] < 2) {
alertString = @"現在のパスワードが間違っています。";
} else if ([textFromBox2 length] < 8) {
alertString = @"パスワードを8文字以上で入力してください。";
} else if (![textFromBox2 isEqualToString:textFromBox3]) {
alertString = @"新しいパスワードとパスワード(確認)が間違っています。";
}
if (alertString) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"過ち"
message:alertString
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}