【问题标题】:Getting value from validation method从验证方法中获取价值
【发布时间】:2016-05-13 11:54:06
【问题描述】:

目前我正在做有关编辑文本字段验证的项目。我有验证来自编辑文本字段的输入的方法(代码如下)。

- (BOOL) validatePhoneNumber: (NSString *) number {
    NSString *phoneRegex = @"[0-9]{10}";
    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];

    return [phoneTest evaluateWithObject:number];

    //[self validatePhoneNumber:yourTextField]
}

然后我有 if else 检查值。但是,我不知道如何从方法中获取值并在 if else 中进行比较。这个问题有什么建议或解决方案。我在 XCode 中使用Objective-C

下面是我的 if else 代码。

if ([[_tempDict objectForKey:@"Contact 1"] isEqualToString:@""] && [self validatePhoneNumber:[_tempDict objectForKey:@"Contact 1"]] && ![self validatePhoneNumber:[_tempDict objectForKey:@"Contact 2"]]) {
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Invalid"
                                                              message:@"Please enter at least one valid contact."
                                                             delegate:nil
                                                    cancelButtonTitle:@"OK"
                                                    otherButtonTitles:nil];
    [message show];
    return NO;
}

【问题讨论】:

  • @beyowulf ![self validatePhoneNumber:[_tempDict objectForKey:@"Contact 2"]

标签: ios objective-c regex validation


【解决方案1】:

您似乎做得正确,但是您的 if 语句没有意义。目前它说:如果联系人 1 和联系人 1 是有效的电话号码,而联系人 2 是无效的电话号码,则显示警报。该 if 语句的第 1 部分和第 2 部分是互斥的,因此您永远不会进入 if 块并且永远不会显示警报。

尝试改变

if ([[_tempDict objectForKey:@"Contact 1"] isEqualToString:@""] && [self validatePhoneNumber:[_tempDict objectForKey:@"Contact 1"]] && ![self validatePhoneNumber:[_tempDict objectForKey:@"Contact 2"]])

if ([[_tempDict objectForKey:@"Contact 1"] isEqualToString:@""] || (![self validatePhoneNumber:[_tempDict objectForKey:@"Contact 1"]] && ![self validatePhoneNumber:[_tempDict objectForKey:@"Contact 2"]]))

【讨论】:

  • 问题解决.. 我只是稍微改变你的代码.. 到这个 if (([[_tempDict objectForKey:@"Contact 1"] isEqualToString:@""] || ![self validatePhoneNumber:[_tempDict objectForKey:@"Contact 1"]]) && ![self validatePhoneNumber:[_tempDict objectForKey:@"Contact 2"]])
  • 没有真正解决它。因为联系人 2 没有通过验证方法...
  • 我不清楚你想要 if 语句是什么。可以肯定的是,应用程序冻结与我写的 if 语句无关。我的声明说如果联系人 1 为空或联系人 1 和联系人 2 不是有效的电话号码,则显示警报。你说如果联系人 1 为空或联系人 1 不是电话号码且联系人 2 不是电话号码,则显示警报。你的可能更接近你想要的,但它们是相似的。您可以通过在 validatePhoneNumber 中检查电话号码是 nil 还是空并返回 no 来节省一些时间。设置断点以查看何时调用。
猜你喜欢
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-22
  • 2012-12-05
  • 1970-01-01
相关资源
最近更新 更多