J'ai trouvé quelques questions sur ce problème, mais aucune ne m'aidait à résoudre mon problème. J'essaye de sauvegarder un objet dans des données de base en utilisant ce code (qui fonctionnait parfaitement dans Xcode 6 et Simulator ...):
let fetchRequest = NSFetchRequest(entityName: "Patient")
let fetchedResults : [NSManagedObject]!
do {
fetchedResults = try managedContext.executeFetchRequest(fetchRequest) as! [NSManagedObject]
patienten = fetchedResults
} catch {
print("error")
}
J'ai ajouté le do-try-catch une fois que j'ai commencé à travailler sur ce projet dans la version bêta de Xcode 7 et un périphérique physique. Maintenant, lorsque je clique sur le bouton Enregistrer, ce morceau de code est appelé, l'application se fige et j'obtiens ce qui suit:
avertissement: impossible de charger les informations de classe Objective-C à partir du cache partagé dyld. Cela réduira considérablement la qualité des informations de type disponibles.
Est-ce que quelqu'un sait où je me suis trompé?
Pour tous ceux qui rencontrent cela à l'avenir, je viens de rencontrer ce problème moi-même et il s'est avéré que j'étais en train de recevoir un débordement de pile d'une fonction récursive.
Apparemment en train d'appeler setValue:forKey:
sur un NSObject appelle le set[Key]
fonction, où [Key]
est le nom (en majuscule) que vous avez donné à la section forKey
.
Donc, si comme moi, vous avez un code qui ressemble à ce qui suit, cela provoquera une boucle infinie et un crash.
func setName(name: String) {
self.setValue(name, forKey: "name")
}
Product
> Clean
J'ai eu le même problème. J'ai supprimé l'application de l'appareil. Puis "Produit-> Nettoyer" dans le menu XCode. Lorsque j'ai relancé l'application, le problème a été résolu.
En fait, ce problème se produisait souvent quand une propriété en entrée était déclarée comme type NSError
et que le compilateur attendait une sortie Error
. Modifiez donc le type d'entrée en Error
pour résoudre ce problème. .
Ce qui m'a aidé dans un problème similaire (xCode 7, Swift 2):
lecture cette question
Ou plus rapidement sans expliquer la raison de la solution: il suffit de commenter @objc(className)
dans votre NSManagedObjectSubclass
, généré à partir de votre entité CoreData (@objc(Patient)
- dans votre cas).
Cette solution (si le problème persiste) ne s'applique pas à xCode 7.1/Swift 2.1, car la méthode de génération de NSManagedObjectSubclasses
a été modifiée.
N'oubliez pas de nettoyer votre projet (Product > Clean
) et en supprimant l’application de votre appareil/simulateur pour remplacer le stockage CoreData.