Variable used within its own initial value

#1

Bonjour,
je rencontre un problème que je n’arrive pas à résoudre dans le développement de mon app …

xCode refuse de compiler et me renvoi le message “Variable used within its own initial value”. D’après mes recherches sur internet cet erreur survient souvent lorsque l’on utilise comme nom de variable le même nom que la fonction a laquelle est rattachée cette variable.

Il ne me semble pas que ce soit mon cas … J’ai d’ailleurs “commenté” (//) tout une partie de mon code mais l’erreur persiste même dans la partie commentée du code ???

Quelqu’un aurait-il une idée de la raison de cette erreur de compilation ?

L’erreur s’affiche au niveau de l’avant dernière fonction :
func presentFirstTimeAlert()
au niveau de la première ligne
let alertPopUp = UIAlertController(title: “Welcome!”, message: “Looks like you are new here. Lets get you set up”, preferredStyle: .alert)

    import UIKit
import Firebase
import FBSDKLoginKit
import FirebaseFirestore

class LoginViewController: UIViewController {

    
//    Outlets
    @IBOutlet weak var ui_emailLoginTxt: UITextField!
    @IBOutlet weak var ui_passwordLoginTxt: UITextField!
    
    
//    Constant
    let _loginManager = FBSDKLoginManager()
    
//    Variables
    
    
    
    
//    Baseline function
    override func viewDidLoad() {
        super.viewDidLoad()
//        let attributes = [NSAttributedString.Key.font: UIFont(name: "AvenirNext-Bold", size: 32)!]
//        UINavigationBar.appearance().titleTextAttributes = attributes
//        if Auth.auth().currentUser == nil {
//            Auth.auth().signInAnonymously { (result, error) in
//                if let error = error {
//                    self.handleFireAuthError(error)
//                }
//            }
//        }
    }
//    @IBAction
    
    @IBAction func loginButtonTouch(_ sender: Any) {
//        guard let email = ui_emailLoginTxt.text, let password = ui_passwordLoginTxt.text else {return}
//        Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
//            if let error = error {
//                self.handleFireAuthError(error)
//                debugPrint(error.localizedDescription)
//                return
//
//            }
//            }
    }
    
    @IBAction func createUserButtonTouch(_ sender: Any) {
//        guard let user = Auth.auth().currentUser else { return }
//        TODO: clean up later
//        if !user.isAnonymous {
//            try! Auth.auth().signOut()
//        }
//        performSegue(withIdentifier: "sg_createNewUser", sender: self)
    }

    @IBAction func forgotPasswordButtonTouch(_ sender: Any) {
//        let vc = ResetPasswordVC()
//        vc.modalPresentationStyle = .overCurrentContext
//        vc.modalTransitionStyle = .crossDissolve
//        present(vc, animated: true, completion: nil)
    }
    
    @IBAction func logInWithFacebookButtonTouch(_ sender: Any) {
//        _loginManager.logIn(withReadPermissions: ["email"], from: self) { (result, error) in
//            if let error = error {
//                debugPrint(error.localizedDescription)
//            } else if result?.isCancelled ?? true {
//                 do something
//            } else {
//                self.signinFirebaseFacebook()
//            }
//
//        }
        
    }
//    @IBAction Segue
    
    
//    @IBAction func goBackLoginVC (segue: UIStoryboardSegue){
    
//    }
    
//    Functions
    
    
    func signinFirebaseFacebook() {
//        let credential =  FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
//        Auth.auth().signInAndRetrieveData(with: credential) { (result, error) in
//            if let isNewUser = result?.additionalUserInfo?.isNewUser{
//                if isNewUser {
//
//                } else {
//
//                }
//        }
//    }
    }
    
    func handleNewUser () {
//        guard let user = Auth.auth().currentUser else { return }
//        var userData = [String: Any] ()
//        userData = ["email": "","username": "","avatarUrl": "","hasSetupAccount": false,"isGuest": false,]
        
//        Firestore.firestore().collection("users").document(user.uid).setData(userData) { (errorFunc) in
//            if let error = errorFunc {
//                debugPrint(error.localizedDescription)
//                self.handleFireAuthError(error)
//                return
//            }
//            self.presentFirstTimeAlert()
//        }
    }
    
//    func presentFirstTimeAlert() {
//        let alertPopUp = UIAlertController(title: "Welcome!", message: "Looks like you are new here. Lets get you set up", preferredStyle: .alert)
//        let notNow = UIAlertAction(title: "Not Now", style: .cancel) { (alert) in
//
//            }
//        let okAction = UIAlertAction(title: "Ok", style: .default) { (alert) in
//            self.performSegue(withIdentifier: "sg_createNewUser", sender: self)
//        }
//        alertPopUp.addAction(notNow)
//        alertPopUp.addAction(okAction)
//        present(alertPopUp, animated: true, completion: nil)
//    }
    
//    gestion des Segues
    
//    override func viewWillAppear(_ animated: Bool) {
//    }

Merci d’avance

#2

Cela veut surtout dire que tu cherches à utiliser une variable sans lui avoir donné de valeur initiale.

#3

Merci pour la réponse.

Mais c’est à n’y rien comprendre car l’erreur persistait alors que les lignes de code ont été mises en commentaires et ne devaient donc logiquement par être compilées.
Finalement, à force de “chipoter” pour essayer de savoir d’où venait l’erreur et alors que l’erreur est toujours là il m’indique que la compilation a réussi et il lance le simulateur ??!!

#4

Xcode conserve parfois les résultats de compilation précédent pour accélérer les choses. En cas d’erreurs de compilation bizarre, il faut faire un Clean pour être certain de repartir d’une base saine.

1 Like