Dans mon UIViewController, j'appelle une méthode dans une autre classe qui me renvoie une liste de NSManagedObjects, que j'instancie dans un tableau. Voici le code:Pourquoi mon tableau de NSManagedObjects perd-il ses propriétés?
fileprivate var albumList = [Album]()
private func loadAlbums() {
APIHandler().getUsersAlbums() {
albums in
self.albumList = albums
self.collectionView?.reloadData()
}
}
Mais c'était à l'origine de mon choix d'avoir nul propriétés une fois loadAlbums était terminée et l'instance de APIHandler effacé. Je résolu ce problème pour l'instant en ayant une instance de APIHandler sur mon UIViewController et appeler la fonction à partir de là, comme ceci:
let api = SpotifyAPIHandler()
fileprivate var albumList = [Album]()
private func loadAlbums() {
api.getUsersAlbums() {
albums in
self.albumList = albums
self.collectionView?.reloadData()
}
}
Cependant, je ne suis pas heureux avec cela. Pourquoi cela arrive-t-il? Comment est-ce que je peux instancier une toute nouvelle liste?
NSManagedObjects est une classe, pas un pointeur. Veuillez reformuler votre question. Si vous voulez créer un nouvel objet géré basé sur un objet existant, vous devez le copier. Pour plus de détails, voir: https://stackoverflow.com/questions/2730832/how-can-i-duplicate-or-copy-a-core-data-managed-object – ninjaproger
Je ne vois pas de problèmes flagrants avec votre code. Après que votre 'loadAlbums()' soit terminé, vous devriez avoir tous vos albums sauvegardés. Que voulez-vous dire que votre tableau a des propriétés nulles? Ne voyez-vous rien dans votre collectionVoir? Avez-vous défini votre collectionViewDataSource et collecitonView.delegate? – cloudcal
Mon tableau a un NSManagedObject valide sur chaque position, mais si j'essaie d'obtenir albumList [0] .name, par exemple, le nom sera nul –