【问题标题】:Accessing textfield.text in an NSArray by index通过索引访问 NSArray 中的 textfield.text
【发布时间】:2015-10-13 01:07:43
【问题描述】:

我有一个文本字段数组。我正在使用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 == ""; 这基本上就是我想要做的。我一直在努力在网上找到这类东西的参考资料。

【问题讨论】:

  • 如果您刚刚开始,在 Stack Overflow 上提问并不是您需要的地方。您应该找到一本好书或一系列在线教程。看看Good resources for learning ObjC。 Big Nerd Ranch 的书籍非常棒,很多人喜欢 iTunes U 上的斯坦福 iOS 课程。祝你好运!
  • 感谢您的参考,但是,现在我没有时间搜索一堆教程来寻找可能不存在的答案。即使你不告诉我怎么做,我也会喜欢一些正确方向的提示和指示。

标签: ios objective-c cocoa-touch uitextfield nsarray


【解决方案1】:
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");
        }
    }

【讨论】:

  • 请解释为什么您的代码解决了提问者的问题。
  • 我没想过做快速枚举的方法。看起来它会起作用。我试试看
  • @JoshCaswell “我无法弄清楚如何在 Objective-c 中从语法上做到这一点”.. 我刚刚写下了如何.. THE END
【解决方案2】:

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

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

您通常还应该将fast enumerationNSArrays 一起使用。因此,您的循环可能如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多