Création d'un objet Realm bloque le chargement d'une app

#1

Bonjour à tous,

Je suis en train de m’entrainer sur une app qui utilise Realm pour la gestion des données et je rencontre un problème à la création d’un objet Realm à l’aide de la très classique ligne : let _realm = try! Realm()

Cet objet est créé dès mon premier View Controller et l’application reste bloquée sur le LauchScreen. A l’aide des points d’arrêt j’ai pu confirmer qu’il s’agissait bien de cette ligne qui posait problème mais je n’ai aucun message dans la console, aucun crash, l’app est juste bloquée.

Je ne donne pas plus de contexte car je ne sais pas ce qui pourrait aider à résoudre le problème mais si quelqu’un serait intéressé pour m’aider à investiguer je suis preneur ! La recherche (dans mon code et sur internet) effectuée de mon côté n’a rien donné.

#2

Il y a longtemps que je n’ai pas fait ça, mais il me semble que j’aurais tendance à créer un Realm() avant le premier ViewController, et d’ailleurs en dehors de la gestion graphique, au niveau du App Delegate, par exemple ?

#3

Hello @guibeltramo,

Est-ce que tu as essayé d’inclure ton try dans un bloc do catch?
Pour essayer d’en savoir plus sur l’exception qui est peut-être lancée?

Sinon, tu n’as aucune erreur dans ta console?
Qu’est ce que tu as quand tu places un breakpoint?

@fjacquemin je ne suis pas sûr que je créerai un Realm() dans l’AppDelegate. J’aurai plutôt tendance à regrouper tout ça dans un Manager pour gérer tout le système de base de donnée au même endroit dans mon code. (Et puis, j’aime bien que l’AppDelegate reste le plus clean possible)

Bonne journée,

Alexandre

#4

Bonjour @Alexandre,

Ci-joint une vidéo qui montre mon problème. J’ai créé un view controller (que tu vois au début de la vidéo) bidon pour éliminer toute autre source potentielle d’erreur. Au niveau du code du View Controller il n’y a rien à part le code pour charger realm comme tu le vois ensuite. Je n’ai aucun message d’erreur, c’est comme si il était bloqué au niveau de l’exécution sans que ça crashe. Et au niveau du simulateur ça reste sur le launchscreen. Et on voit que le code ne va pas plus loin que la création de l’objet realm car le dernier Print n’est pas exécuté.

Je pense que mon problème vient de mes classes qui utilisent realm mais je ne sais pas où.

@fjacquemin le Realm est normalement créé depuis un manager, je le créais depuis le view controller pour ressayer d’isoler le problème.

#5

C’est vraiment étrange comme problème.
Quelle version de Realm tu utilises ?
Sur un projet vide tu as le même problème ?

#6

Je ne sais pas si c’est voulu de ta part mais sur la video tu as 2 breakpoint pour debuger c’est pour ca que ton application bloque, fait un clique droit sur les deux points bleus et met “Delete breakpoint”

#7

J’utilise un la version la version 3.17.1 avec la dernière version d’Xcode.

Non sur un projet vide je ne rencontre pas ce problème

@samymahi non même en levant les points d’arrêt ça ne change rien

#8

Tu dois donc faire une chose supplémentaire dans ce projet qui pose problème.
Tu as changé quelque chose dans le AppDelegate par exemple ?

#9

Rien de spécial dans l’App Delegate, je ne l’ai pas touché et il est exactement identique à celui d’un nouveau projet. Et rien de bien spécial dans mon app à part un modèle realm peut-être mal monté. Est-ce que l’initialisation de l’objet Realm pourrait planter parce que certaines classes Realm utilisent (mal) des propriétés ou fonctions qui ne sont pas compatibles avec Realm ?

#10

Hello @guibeltramo,

Ce que tu peux faire (si tu le souhaite), c’est me contacter en privé, pour qu’on s’échange les sources, ainsi je pourrai essayer de faire tourner le projet sur ma machine et ce sera plus simple à debugger.

Bonne journée,

Alexandre.