从验证方法中获取价值

时间:2016-02-04 02:23:58

标签: ios objective-c regex validation

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

- (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中进行比较。这个问题是否有任何建议或解决方案。我在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;
}

1 个答案:

答案 0 :(得分:0)

你似乎正确地做了,但你的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"]]))