【问题标题】:Abort IBAction on "if statement error"在“if 语句错误”上中止 IBAction
【发布时间】:2013-10-18 01:23:56
【问题描述】:

我正在尝试进行我的第一个用户注册。注册将由 4 个文本字段进行,需要用户编辑并在按下按钮 (IBAction) 后保存。当 1 个字段为空时,需要中止此 IBAction。将向用户显示警告文本,他/她需要在继续将文本数据保存到解析服务器之前纠正问题/

我已将我的 4 个 Uitextfields 连接到 .m 脚本,并且我认为我已经编写了一个很好的 if 语句。但是如何在警告文本之后停止我的脚本?

代码.M:

- (IBAction)REGISTERNEWUSER:(id)sender
{

    //DEFINE STRINGS FOR MODULE
    NSString *NICKNAME = Nickname.text;
    NSString *USERNAME = Username.text;
    NSString *PASSWORD = Password.text;
    NSString *EMAIL = Email.text;
    NSString *ERRORREGISTRATION = @"Please fill up all fields above before proceeding with the  registration...";

    //CHECK IF ALL REGISTRATION FIELDS ARE FILLED
    if ([Nickname.text length] > 0 || [Username.text length] > 0 || [Password.text length] > 0 || [Email.text length] > 0 )
    {
    }
    ErrorRegistration.text = ERRORREGISTRATION;

    //
    // METHODE NEEDS TO STOP HERE
    // BUT AT MOMENT CONTINUES TO SEND DATA TO PARSE
    //
    {

    }


    //SEND DATA TO PARSE SERVER
    PFObject *User = [PFObject objectWithClassName:@"USER"];
    [User setValue:NICKNAME forKey:@"Nickname"];
    [User setValue:USERNAME forKey:@"Username"];
    [User setValue:PASSWORD forKey:@"Password"];
    [User setValue:EMAIL forKey:@"Email"];
    [User save];
}

提前感谢您提供的任何帮助。 亲切的问候, 留置权。

【问题讨论】:

  • 在要退出方法的地方添加return 语句(它不是“脚本”)。
  • 我是这个“退货声明”的新手。 return 语句是否需要指向 somewere 还是会自动返回到“按下按钮之前”?感谢您在方法与脚本词上纠正我。你的权利(脸红)我会在我的编码中改变它。
  • 如果您不知道 return 语句的作用,请停止在 iOS 应用程序上的工作,并花一些时间学习 Objective-C(和 C)的基础知识。这将是美好的时光。如果您不了解编程语言的基础知识,就无法编写应用程序。我的意思是这是一个有用的评论。

标签: ios objective-c if-statement ibaction abort


【解决方案1】:

你想要这样的东西:

if ([Nickname.text length] == 0 || [Username.text length] == 0 || [Password.text length] == 0 || [Email.text length] == 0 ) {
    // Not all fields are entered
    ErrorRegistration.text = ERRORREGISTRATION;
} else {
    // All fields are entered
    //SEND DATA TO PARSE SERVER
    PFObject *User = [PFObject objectWithClassName:@"USER"];
    [User setValue:NICKNAME forKey:@"Nickname"];
    [User setValue:USERNAME forKey:@"Username"];
    [User setValue:PASSWORD forKey:@"Password"];
    [User setValue:EMAIL forKey:@"Email"];
    [User save];
}

顺便说一句 - 修复您的大写锁定键。方法和变量名称应使用 camelCase(以小写字母开头)。类名应使用 CamelCase(以大写字母开头)。

if ([nickname.text length] == 0 || [username.text length] == 0 || [password.text length] == 0 || [email.text length] == 0 ) {
    // Not all fields are entered
    errorRegistration.text = @"Please fill up all fields above before proceeding with the  registration...";
} else {
    // All fields are entered
    //SEND DATA TO PARSE SERVER
    PFObject *user = [PFObject objectWithClassName:@"USER"];
    [user setValue:nickname.text forKey:@"Nickname"];
    [user setValue:username.text forKey:@"Username"];
    [user setValue:password.text forKey:@"Password"];
    [user setValue:email.text forKey:@"Email"];
    [user save];
}

在这种情况下不需要所有额外的变量。

【讨论】:

  • 谢谢,您的编码工作就像一个魅力。 :) 很抱歉变量中的上限。这是我已经使用了一段时间的一种方式,我已经适应了它。是否必须使用您提到的 CAPS 用法,它会长期产生问题还是只是一个标准?谢谢你的帮助!!!
  • 我提到的命名约定当然不是必需的。然而,它是许多程序员在 Objective-C、Java 和其他语言中使用的标准。使用通用标准可以让其他人更容易阅读您的代码。如果您曾经与其他开发人员一起工作,那么团队使用相同的编码标准以使事情变得更容易是很重要的。如果它永远只有你和你自己的代码,那就做你想做的事。但即便如此,我还是建议遵循通用约定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 2017-04-28
  • 1970-01-01
  • 2010-11-10
  • 2016-07-15
  • 1970-01-01
相关资源
最近更新 更多