if or/and else if 语句被传递
Posted
技术标签:
【中文标题】if or/and else if 语句被传递【英文标题】:if or/and else if statement being passed over 【发布时间】:2016-01-26 00:24:47 【问题描述】:我正在为我的应用程序构建一个自定义解析登录,但我无法在我的 loginBTN 操作中执行我的一个 if 语句。一旦我使用 loginSwitch.on == true
按登录,即使我的用户名和密码文本字段为空/nil,它也会转到配置文件视图,即使用最后登录的用户打开应用程序。在我的代码中,我试图让它显示一个警报,要求输入用户名和密码。更令人困惑的是,当调用 else if loginSwitch.on == false
并且 3 个文本字段为空时,我收到了警报消息。请帮助停止“登录”状态下的自动转场/loginSwitch.on == true。
@IBAction func loginBTN(sender: AnyObject)
if loginSwitch.on == true
if usernameTXTFLD != nil || passwordTXTFLD != nil
PFUser.logInWithUsernameInBackground(usernameTXTFLD.text!, password:passwordTXTFLD.text!)
(user: PFUser?, error: NSError?) -> Void in
if user == user
dispatch_async(dispatch_get_main_queue(), () -> Void in
self.performSegueWithIdentifier("loginToProfileSegue", sender: self)
)
else
let errorString = error!.userInfo["error"] as? String
self.displayAlert("Log In Failed", message: errorString!)
else
self.displayAlert("Log In Failed", message: "Error: Please Provide Unique Username and Password")
else
if self.usernameTXTFLD != nil || self.passwordTXTFLD != nil || self.emailTXTFLD != nil
let user = PFUser()
user.username = usernameTXTFLD.text
user.password = passwordTXTFLD.text
user.email = emailTXTFLD.text
user.signUpInBackgroundWithBlock
(succeeded: Bool, error: NSError?) -> Void in
if let _ = error
self.displayAlert("Log In Failed", message: "Error: Please Provide Unique Username, Password, and Email Address")
else
dispatch_async(dispatch_get_main_queue(), () -> Void in
self.performSegueWithIdentifier("loginToProfileSegue", sender: self)
)
else if usernameTXTFLD == nil || passwordTXTFLD == nil || emailTXTFLD == nil
//Alert - Please provide username, password, and emailaddress
self.displayAlert("Signup Failed", message: "Error: Please Provide Unique Username, Password, and Email Address")
【问题讨论】:
你是如何连接你的segue的?你是从你的按钮还是从你的 ViewContorller 拖动它的? 我从视图控制器中吸毒。我还在使用 segue 进行 twitter 和 facebook 登录,它们按预期工作。您是否建议只为这个特定按钮制作 1 个独特的 segue? 【参考方案1】:您有一些问题。您的几个nil
检查不正确,您正在检查文本字段本身是否为nil
,而不是检查文本字段中是否有任何文本。
if loginSwitch.on == true
if usernameTXTFLD.text!.isEmpty == false && passwordTXTFLD.text!.isEmpty == false
PFUser.logInWithUsernameInBackground(usernameTXTFLD.text!, password:passwordTXTFLD.text!)
(user: PFUser?, error: NSError?) -> Void in
if user == user
dispatch_async(dispatch_get_main_queue(), () -> Void in
self.performSegueWithIdentifier("loginToProfileSegue", sender: self)
)
else
let errorString = error!.userInfo["error"] as? String
self.displayAlert("Log In Failed", message: errorString!)
else
self.displayAlert("Log In Failed", message: "Error: Please Provide Unique Username and Password")
else
if self.usernameTXTFLD.text!.isEmpty == false && self.passwordTXTFLD.text!.isEmpty == false && self.emailTXTFLD.text!.isEmpty == false
let user = PFUser()
user.username = usernameTXTFLD.text
user.password = passwordTXTFLD.text
user.email = emailTXTFLD.text
user.signUpInBackgroundWithBlock
(succeeded: Bool, error: NSError?) -> Void in
if let _ = error
self.displayAlert("Log In Failed", message: "Error: Please Provide Unique Username, Password, and Email Address")
else
dispatch_async(dispatch_get_main_queue(), () -> Void in
self.performSegueWithIdentifier("loginToProfileSegue", sender: self)
)
else
//Alert - Please provide username, password, and emailaddress
self.displayAlert("Signup Failed", message: "Error: Please Provide Unique Username, Password, and Email Address")
【讨论】:
它告诉我类型“String”没有成员“length”,有没有更好的方法来确定长度或字符? 将其转换为 NSString,或者您也可以使用text?.characters.count > 1
那是我的 Objective-C 展示。看我的更新。我认为这会奏效。
成功了。不过,您对?
和!
s 的看法是正确的。这是我必须使用的......if usernameTXTFLD.text!.isEmpty == false && passwordTXTFLD.text!.isEmpty == false
谢谢。以上是关于if or/and else if 语句被传递的主要内容,如果未能解决你的问题,请参考以下文章
(Unity)如何传递变量,没有一堆If Else语句的变量