2014-12-24 4 views
-2

У меня есть небольшое приложение, которое имеет 2 кнопки. 1 Кнопка сохранения ввода текстового поля, а другая, Загрузка сохраненного ввода в текстовое поле. Но я не знаю, как проверить. Прямо сейчас сохраняется, даже если текстовое поле пуст. Итак, я хочу сделать следующую валидацию:Сохраните данные текстового поля, но подтвердите данные

если textfield = null , тогда не сохраняйте.

My .m 

- (IBAction)save:(id)sender { 

    // Frist Save String 

    NSString *saveString = field1.text; 
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:saveString forKey:@"saveString"]; 
    [defaults synchronize]; 

    // Second Save String 

    NSString *saveString2 = field2.text; 
    NSUserDefaults * defaults2 = [NSUserDefaults standardUserDefaults]; 
    [defaults2 setObject:saveString2 forKey:@"saveString2"]; 
    [defaults2 synchronize]; 


} 
- (IBAction)load:(id)sender 
{ 

    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
    NSString * loadString = [defaults objectForKey: @"saveString"]; 
    [field1 setText:loadString]; 

    NSUserDefaults * defaults2 = [NSUserDefaults standardUserDefaults]; 
    NSString * loadString2 = [defaults2 objectForKey: @"saveString2"]; 
    [field2 setText:loadString2]; 

} 


- (IBAction)dismiss1:(id)sender { 
    [sender resignFirstResponder]; 

} 


- (IBAction)dismiss2:(id)sender { 
    [sender resignFirstResponder]; 




My .h 

@interface ViewController : UIViewController 
{ 
    IBOutlet UITextField *field1; 
    IBOutlet UITextField *field2; 


} 

//Database Actions 

- (IBAction)save:(id)sender; 
- (IBAction)load:(id)sender; 

//Keyboard Dismisses 

- (IBAction)dismiss1:(id)sender; 
- (IBAction)dismiss2:(id)sender; 
+1

if wantValidation, тогда напишите код для этого. – Andy

+0

if (field1.text.length == 0 && [field1.text isEqualToString: @ ""]) { // нет данных} –

+0

Спасибо, ребята, nikita решила мои проблемы ... я новичок :) – Poetazus

ответ

-1

попробовать, как этот

- (IBAction)save:(id)sender { 




     if([field1.text isEqualToString:@""] && [field2.text isEqualToString:@""]) { 
      // There's no text in the textbox. 
     } 
     else{ 
      // Frist Save String 

      NSString *saveString = field1.text; 
      NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
      [defaults setObject:saveString forKey:@"saveString"]; 
      [defaults synchronize]; 

      // Second Save String 

      NSString *saveString2 = field2.text; 
      NSUserDefaults * defaults2 = [NSUserDefaults standardUserDefaults]; 
      [defaults2 setObject:saveString2 forKey:@"saveString2"]; 
      [defaults2 synchronize]; 

     } 
     } 
+0

Thank вы спорт, вы отвечаете, работали в других вопросах .. в одном посте вы ребята решили меня 3 проблемы :) проблемы с новичком – Poetazus

+0

приветствую @Poetazus – Sport

0
- (IBAction)save:(id)sender 
{ 
    if ([self ControlValidation]==YES) 
    { 
     NSString *saveString = field1.text; 
     NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
     [defaults setObject:saveString forKey:@"saveString"]; 
     [defaults synchronize]; 

     // Second Save String 

     NSString *saveString2 = field2.text; 
     NSUserDefaults * defaults2 = [NSUserDefaults standardUserDefaults]; 
     [defaults2 setObject:saveString2 forKey:@"saveString2"]; 
     [defaults2 synchronize]; 
    } 
} 
-(BOOL)ControlValidation 
{ 
    if ([self isEmpty:field1.text ]==YES) 

    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"Text Field1 is empty" delegate: nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
     return NO; 
    } 
    if ([self isEmpty:field2.text ]==YES) 

    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry" message:@"Text Field2 is empty" delegate: nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 

     return NO; 
    } 
    return YES; 
} 


-(BOOL)isEmpty:(NSString *)str 

{ 
    if (str == nil || str == (id)[NSNull null] || [[NSString stringWithFormat:@"%@",str] length] == 0 || [[[NSString stringWithFormat:@"%@",str] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0) 
    { 
     return YES; 

    } 

    return NO; 
} 
+0

Молодцы за нуль проверяют и удаляют пробелы :) –

+0

Спасибо, никита! Это сработало :) – Poetazus

+0

Я создавал всплывающие окна (виды предупреждений) вручную, вы решили 2 вопроса :) теперь мне просто нужно поставить предупреждение, когда данные будут валидом :) Если я опубликую это приложение, я поместлю ваше имя в раздел благодарности – Poetazus

0

Выполните следующие действия, если вы хотите сохранить либо поле, даже, если другой пуст.

- (IBAction)save:(id)sender { 

// First Save String 
    if([self textFieldTextIsValid:field1]){ 

    NSString *saveString = field1.text; 
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:saveString forKey:@"saveString"]; 
    [defaults synchronize]; 

    } 


// Second Save String 
    if([self textFieldTextIsValid:field2]){ 

    NSString *saveString2 = field2.text; 
    NSUserDefaults * defaults2 = [NSUserDefaults standardUserDefaults]; 
    [defaults2 setObject:saveString2 forKey:@"saveString2"]; 
    [defaults2 synchronize]; 

    } 
} 

-(BOOL)textFieldTextIsValid:(UITextField *)textfield{ 
    if([textfield.text length] !=0){ 
    return YES; 
    }else{ 
    return NO; 
    } 
} 

если вы хотите сохранить оба поля, только если оба они имеют то некоторый текст изменить IBOutlet сохранить метод следующим образом

- (IBAction)save:(id)sender { 

    if([self textFieldTextIsValid:field1] && [self textFieldTextIsValid:field2]){ 

// First Save String 
    NSString *saveString = field1.text; 
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:saveString forKey:@"saveString"]; 
    [defaults synchronize]; 


// Second Save String 
    NSString *saveString2 = field2.text; 
    NSUserDefaults * defaults2 = [NSUserDefaults standardUserDefaults]; 
    [defaults2 setObject:saveString2 forKey:@"saveString2"]; 
    [defaults2 synchronize]; 

    } 
} 

Таким образом, упаковывают добавить дополнительные критерии для проверки разумность текста, вводимого в ваши текстовые поля, тогда вы можете просто добавить логику в свой метод textFieldTextIsValid и вызвать ее в любом месте своего класса.

Смежные вопросы