2015-07-22 2 views
-1

У меня есть массив текстовых полей. Я использую цикл for, чтобы пройти через массив и проверить, не является ли текстовый атрибут текстового поля пустым.Доступ к textfield.text в NSArray по индексу

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 == ""; Это то, что я пытаюсь сделать. Я изо всех сил старался найти ссылки на подобные вещи в Интернете.

+0

Если вы только начинаете, задавать вопросы о переполнении стека - это не то место, которое вам нужно. Вы должны найти хорошую книгу или серию онлайн-руководств. Взгляните на [Хорошие ресурсы для обучения ObjC] (http://stackoverflow.com/q/1374660). Книги Big Nerd Ranch превосходны, и многие люди любят курс Stanford iOS на iTunes U. Удачи! –

+0

Спасибо за ссылку, однако, прямо сейчас у меня нет времени, чтобы разыграть кучу учебников, чтобы найти ответ, которого может не быть. Даже если вы не скажете мне, как это сделать, я бы хотел, чтобы некоторые подсказки и указатели были в правильном направлении. –

ответ

0
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"); 
     } 
    } 
+0

Пожалуйста, объясните _why_, ваш код решает проблему афера. –

+0

Я не думал о том, чтобы сделать быстрый метод перечисления. Похоже, это сработает. Я попробую это –

+0

@JoshCaswell «Я не могу понять, как это сделать синтаксически в объективе-c». Я просто записал, как .. END –

0

Строки в текстовых полях, не так же, как текст, сами поля. Вы должны получить доступ к свойству text этого поля, чтобы сравнить его с другой строкой. Синтаксис точно такой же, как и для C++ или Java: arrayOfTextFields[i].text.

Вы также можете использовать [[arrayOfTextFields objectAtIndex:i] text]. Эти два полностью эквивалентны (существуют некоторые различия в реализации, которые здесь не важны).

Вы также должны использовать fast enumeration с NSArray. Таким образом, ваша петля может выглядеть так:

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