Ich habe einen Alarmcontroller definiert, wenn der Benutzername oder das Passwort nicht korrekt ist, sollte der Alarm aufgehen, und es funktioniert einwandfrei. aber wenn der Benutzername & Passwort trotz der Übereinstimmung übereinstimmt, taucht es jedes Mal auf, wenn Sie sich einloggen. Ich glaube, ich habe die verschachtelte Bedingung nicht richtig definiert? hilf mir, den verschachtelten Zustand zu sortieren.AlertController wird jedes Mal in verschachtelten Bedingungen aufgerufen. Swift ios
-Code für Anmeldung
import UIKit
import CoreData
import Foundation
class ViewController: UIViewController {
var usernameGlobal : String = ""
@IBOutlet weak var emailText: UITextField!
@IBOutlet weak var passText: UITextField!
@IBOutlet weak var loginButton: UIButton!
@IBAction func loginAction(_ sender: Any) {
let appDel = UIApplication.shared.delegate as! AppDelegate
let context = appDel.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
request.returnsObjectsAsFaults = false
// request.predicate = NSPredicate(format: "username = %@", "" + emailText.text!)
do {
let results = try! context.fetch(request)
if(results.count > 0){
for result in results as! [NSManagedObject]
{
if emailText.text == result.value(forKey: "username") as? String && passText.text == result.value(forKey: "password") as? String {
print(emailText.text!, passText.text!)
usernameGlobal = self.emailText.text!
let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle : nil)
let desController = mainStoryBoard.instantiateViewController(withIdentifier: "AddViewController") as! AddViewController
let newFrontViewController = UINavigationController.init(rootViewController:desController)
revealViewController().pushFrontViewController(newFrontViewController, animated: true)
}
else {
let alertController = UIAlertController(title: "Oops!", message: "Incorrect username or password", preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)
alertController.addAction(defaultAction)
present(alertController, animated: true, completion: nil)
}
}
}
}
}
@IBAction func signupSegue(_ sender: Any) {
let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle : nil)
let desController = mainStoryBoard.instantiateViewController(withIdentifier: "SignupViewController") as! SignupViewController
let newFrontViewController = UINavigationController.init(rootViewController:desController)
revealViewController().pushFrontViewController(newFrontViewController, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
loginButton.backgroundColor = UIColor.blue
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
ist Ihre results.count == 1? – koropok
if (results.count> 0) { –
Es besteht die Möglichkeit, dass Ihr Ergebnisarray ein Objekt enthält, das nicht "Benutzername" und "Kennwort" enthält. also wird dein anderer Zustand immer passieren. – koropok