Passage de données "safety first", ça passe pas!😩

D’ailleurs, à priori en analysant les logs:
1- il crée bien un nouveau coureur avec les éléments de la class coureur
2- il ne renvoi pas le print dans la tableView de nom ListeCoureursTVC

if let coureurs = _coureurManager.getCoureur(atIndex: indexPath.row){
cell.textLabel?.text = coureurs.name
print(“test optionnel: (coureurs.name)”)

dans la console: test optionnel est vide.

Et si tu fais coureurs._name ?

déjà essayé mais c’est une variable privée donc pas possible. Bizarre…
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: “coureurs-cell”, for: indexPath) /as! CustomCoureurTableViewCell/
j’ai essayé comme ça:
if let coureurs = _coureurManager.getCoureur(atIndex: indexPath.row){
cell.textLabel?.text = coureurs.name
print(“test optionnel: (String(describing: cell.textLabel?.text))”)
Résultat:
Nb d’objets crées:10
l’objet dans la liste lié à son index: coureurs {
_name = SELLEC;
_prenom = TOM;
_sexe = ;
_classe = ;
}
test optionnel: Optional("")

L’optionnel reste vide.

Je pars au boulot. Merci de ton aide. Je m’y recolle un peu ce soir. @+

Et si, pour tester, tu fais :

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let realm = try! Realm()
        let coureursList = realm.objects(coureurs.self)
        let coureurName = coureursList[indexPath.row]._name
        let cell = tableView.dequeueReusableCell(withIdentifier: "coureurs-cell", for: indexPath)
        cell.textLabel?.text = coureurName
        return cell
    }

Est-ce que ça t’affiche quelque chose ?

ET… non, malheureusement…

Salut,

Dans ta classe CoureursManager utilise un singleton :

class CoureurManager {
private static var s_instance: CoureurManager? = nil
    public static var shared: CoureurManager? {
        if s_instance == nil {
            s_instance = CoureurManager()
        }
        return s_instance!
    }

private let _realm: Realm
public let _coureursList: Results<coureurs>

private init() {
_realm = try! Realm()
_coureursList = _realm.objects(coureurs.self)
}

// et la tu déclare toutes tes fonctions en "public func ..."

}

Bon, résumons un peu:

Depuis le début j’ai un problème que je n’arrive pas à résoudre:
J’ai mon objet coureur (name, prénom, sexe, classe) qui est bien créée (vérifié dans Realm Browser + une ligne de tableView est ajoutée à chaque nouvelle création d’une coureur via ma table "coueurEdit). Lorsque je clique sur chaque élément de la table, la console me fait bien apparaitre l’élément correspondant.
MAIS rien n’apparait dans mes ListeCoureurViewController et DataCoureur (équivalent du CredentialController du cours de Maxime).

En regardant avec des Print j’ai l’impression que le problème se situe là:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: “coureurs-cell”, for: indexPath) /as! CustomCoureurTableViewCell/

    if let coureurs = _coureurManager.getCoureur(atIndex: indexPath.row){
       cell.textLabel?.text = coureurs.name
        print("test optionnel: \(String(describing: cell.textLabel?.text))")
        
    }

    return cell
}

Dans la console, le print “test optionnel” reste désespérément vide…

J’avais pas vu ta réponse. Merci.
Je vais tester ça mais pourquoi le code initial de Maxime ne fonctionne pas dans mon cas?

Et dans ton viewController :

private let _coureurs = CoureurManager.shared

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            if let listCount = _coureurs.getCoureurCount() {
                return listCount
            } else {
                return 0
            }
        }
        
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "coureur-cell", for: indexPath)
            if let coureurs = _coureurs.getCoureur(atIndex : indexPath.row {
                cell.textLabe?.text = coureurs.name
            }
            
            return cell
        }

En relisant le début du post je ne suis pas sur que le singleton soit la solution à ton problème. car j’avais pas vu ce post :

Ton problème doit venir d’ailleur

Tu as un moyen de nous partager ton code (par exemple sur Github) pour que l’on puisse regarder de notre côté ?

Je veux bien mais je n’ai pas encore utilisé Github.

Ou faire un zip de ton dossier contenant tes fichiers de code

Je vois ça demain matin. Là, 2 jours à me prendre la tête là-dessus… je craque! :face_with_symbols_over_mouth::thinking:

Merci de votre aide! :+1:

Je te comprends !
Des fois c’est passant à autre chose et en revenant dessus quelques jours après que l’on trouve la solution :slight_smile:

Je peux aussi regarder si tu veux :slight_smile:

euh ton fichier workspace n’est pas bon, il n’y a que les pods…

oups! En rangeant mon dossier (j’ai enlevé les images qui étaient en vrac dedans) j’avais pas vu que j’avais enlevé le fichier codeproj. Voici le nouveau lien:

J’ai mis un nouveau lien.