通过索引访问 NSArray 中的 textfield.text

Accessing textfield.text in an NSArray by index

我有一组文本字段。我正在使用 for 循环遍历数组并检查文本字段的文本属性是否为空。

NSArray *arrayOfTextFields = [NSArray arrayWithObjects: _nameTextfield, _emailTextfield, _phoneTextfield, _termTextfield, _schoolTextfield, _graduationTextfield, _gpaTextfield, _degreeTextfield, _interestTextfield, _groupTextfield, _appliedTextfield, nil];

for (int i = 0; i < [arrayOfLabels count]; i++) {

    if ([[arrayOfTextFields objectAtIndex:i] isEqualToString:@""]) {
        NSLog(@"if statement ran");
    }
}

显然 if 语句不会 运行 因为它是将文本字段与字符串进行比较。我不知道如何在 Objective-C 中从语法上做到这一点。在 C++ 或 Java 中,这样的事情会非常容易,它可能看起来像 arrayOfTextFields[i].text == ""; 这基本上就是我正在尝试做的事情。我一直在努力在网上找到对这类事情的参考。

NSArray *arrayOfTextFields = [NSArray array];//set your labels here

    for (UITextField *textField in arrayOfTextFields) {

        if ([textField.text isEqualToString:@""]) {
            NSLog(@"if statement ran");
        }
    }

或者你也可以试试这个..

NSArray *arrayOfTextFields = [NSArray array];//set your labels here

    for (int i = 0; i < [arrayOfTextFields count]; i++) {

        if ([((UITextField*)[arrayOfTextFields objectAtIndex:i]).text isEqualToString:@""]) {
            NSLog(@"if statement ran");
        }
    }

文本字段中的字符串与文本字段本身不同。您必须访问字段的 text 属性 才能将其与另一个字符串进行比较。语法与您引用的 C++ 或 Java 完全相同:arrayOfTextFields[i].text.

您也可以使用[[arrayOfTextFields objectAtIndex:i] text]。两者在效果上是完全等价的(有一些实现上的差异这里不重要)。

您通常还应该将 fast enumerationNSArray 一起使用。因此你的循环看起来像这样:

for( UITextField * field in array ){
    if( [field.text isEqualToString:@""] ){
        // Do stuff
    }
}