[Résolu] Transmettre une Entity Relationship comme un Int ou un String
Bonjour,
en gros, dans mon coreData, j'ai une entité de base - Patients :
import Foundation
import CoreData
@objc(Patients)
class Patients: NSManagedObject {
@NSManaged var nom: String
etc
}
J'ai aussi plusieurs Relationships :
Par exemple :
Au sein du code précédent.
@NSManaged var uneRelationship: UneRelationship?
Puis dans l'entité associé, évidemment :
import Foundation
import CoreData
@objc(UneRelationship)
class UneRelationship: NSManagedObject {
@NSManaged var blablabla: String
etc
@NSManaged var patients: Patients
}
Voilà pour le coreData tout simple.
Je suis en train de construire une méthode qui doit travailler sur toutes ces fameuses entity Relationship avec Patients.
Si je travaille sur une seule entity, pas de problèmes.
let fetchEntity: FetchEntity = FetchEntity()
let fetchResults: NSArray = fetchEntity.getFetchResults("Patients", predicateField: listeDesVariables.nomString)
let singlePatient: Patients = fetchResults.lastObject as! Patients
if let ecran = singlePatient.uneRelationship {
...
}
Mais j'aurai besoin de faire un truc du genre :
if let ecran = singlePatient.variableRepresentantNimporteQuelleEntity {
...
}
Et c'est là où je bloque.
Pour un String, on fait :
var unString: String
Pour un Int :
var unInt: Int
Mais pour une variableRepresentantNimporteQuelleEntity, qui peut être uneRelationship ou uneAutreRelationship ou encoreUneAutreRelationship, quel est le type ?
Puisque :
uneRelationship est de type UneRelationship
et
uneAutreRelationship est de type UneAutreRelationship
et
encoreUneAutreRelationship est de type EncoreUneAutreRelationship
quel est le type de la variable qui pourrait représenter n'importe laquelle de ce entité ?
à‰videmment le but est d'éviter de faire un énorme switch...
Merci d'avance...
Réponses
A force d'essais, j'ai réussi à faire ce que je voulais.
Récupérer dans une boucle, les entity Relationship.
Je met le code, si ça peut aider.
C'est la méthode "getField()"
Puis l'appel de la méthode
Je met donc résolu.
Hello,
J'ai l'impression que ton code n'est pas optimisé. Pourquoi passes-tu fetchResults (NSArray) en paramètres dans le getField ?
Oh purée, t'as grave raison, c'est un reste de recherche/tests/copier/coller.
ComD'hab, t'as l'oe“il.
Merci d'avoir pris le temps, samir, je vais virer ça tout de suite.
Ah merci Aliator, je l'ai downloadé.
ça a l'ai bien aussi.
Je regarderais dès que je serais sorti de mon projet, car j'avance bien, et je touche presque à la fin, à part mes problème de memory grows.
Mais je créerai un post là -dessus.
Encore merci.
Tu dis ça au "Guardian of Consistency" de CocoaPods. Tu va te faire gronder toi si tu télécharges les sources à l'ancienne et que tu n'utilises pas CocoaPods .
Bon courage pour finir ton application !
Ben il m'a donné le lien pour cela, non ?
C'est un lien github. J'ai lu puis downloadé pour la suite.
samir, en fait sur l'histoire du fetchResults, je me suis carrément enflammé.
Bon, sur ce sujet, je ne change rien, t'avais raison de toutes façon.
Par contre, en changeant de "patients" (autre enregistrement coreData dans le tableView), je me suis rendu compte que je récupérais toujours les même données. ça craint.
Voir le code que je jugeais bon, plus haut.
Donc, j'ai un peu trituré tout ça, et je me retrouve avec le même problème. Voir le titre du post.
J'ai viré la transmission de l'entity de base, car je l'ai déjà au départ. J'avais ça pour attaquer la relationsShiop, et ça marche pas.
Je n'en suis qu'au départ, je n'arrive même pas à choper la relationShip, alors quand j'en serais à récupérer un de ses champs, on va rigoler.
Mais bon, concernant le premier niveau d'attaque...
Je simplifie mon code pour que ce ne soit pas trop l'embrouille. Donc le return est vide pour l'instant.
Je travaille sur les printlns.
Là , j'ai bien println :
et
aaa étant le champ "nom" pour le predicateField (voir plus haut (func getFetchResults())
Mais quand je remplace
par
Il ne récupère pas le field - Pfff - C'est sur, dans le coreData
et non pas string. D'où le titre.
Puisque dans ce projet, il faudrait que ce soit en variable, et transmis à une méthode.
J'ai ça
mais c'est tout - Normal.
Ah, en écrivant ce post, j'ai fait une petite modif et ça s'arrange en faisant ça :
Dingue, c'est en faisant la remarque sur le string, que j'ai pensé à le virer, et donc xCode, pour une fois, ne dit pas que des conneries (enfin j'espère) - Dixit le AnyObject.
J'ai donc maintenant, cela :
Très intéressant.
Il ne me reste plus qu'à récupérer maintenant les champs de cette entité (relationShip)
Je m'y attelle demain.
Merci d'avance pour les remarques
En gros, si ne dois pas transmettre et récupérer une variable représentant cette entity relationship,
je sais le faire.
Voilà , l'idée, c'est cette histoire de variable d'entity et surtout de son type qui varie en fonction de l'entity transmise.
Bon ben j'avais ôter le "Résolu", et du coup je vais le remettre.
J'ai pu pousser mes investigations, et j'ai trouvé.
Là , c'est sur. Je change de "patients" et les données sont bien différentes et associées au patient.
Je suis vraiment désolé d'occuper le forum, alors que je trouve tout seul la solution à mon problème.
Mais peut-être que ces délires (on ne sait jamais) pourront éclairer certain collègues.
En tout cas en résumé je suis un grand fan de :
et de
et évidemment de :
Et aussi de :
ou :
Voici le code...
La classe :
Et l'appel :
Encore merci pour l'aide des barmen.