Charger une entité Core Data dans un Array
Bonsoir à tous,
Comment puis-je charger les données contenues dans une entité Core Data vers un Array ?
Admettons que mon entité se nomme Produit, j'avais commencé à faire une boucle :
var arrayOfProduct = NSArray
for produit in Produit {
...
}
Mais je n'ai pas la syntaxe, merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Quand tu fais un NSFetchRequest, le résultat est déjà un array - fetchedObjects.
Qu'est-ce que tu veux faire avec les données ?
En fait dans une de mes applications déjà publiée sur le store, j'ai créé le modèle Core Data avec un attribut date en String (erreur) !
je voulais recréer un Array avec tous les attributs du modèle Core Data mais avec une date qui a bien le type date pour pouvoir faire des tris. Je pourrais changer le type dans Core data mais je ne voulais pas avoir à faire une migration du modèle Core Data lors de la republication de l'appli.
Tu as combien d'attributs dans Product ?
Comment accèdes-toi les products ? Tu utilises un NSFetchedResultsController ?
Pour les trier hors de Core Data, tu peux prendre l'array et faire qqch comme suivant :
@Colas_ : j'ai 5 attributs
@Joanna Carter : j'utilise ceci pour extraire les données :
En revanche je ne comprends pas bien ton code, comment je fais si je veux trier mes produits par la date d'entrée en stock de la plus ancienne à la plus récente (ou l'inverse) ?
dans ma table j'ai en gros :
ID : 1
Produit : produit 1
Date entrée : 14 février 2017
ID : 2
Produit : produit 2
Date entrée : 01 février 2017
etc.
merci
Mais dans ton cas, il te faut séparer les composants de tes strings, les réarranger et renvoyer le resultat de la comparaison.
Exemple utilisant une struct juste pour tester
Et du code pour faire le test :
C'est bizarre ton machin.
En Objective-C, j'aurais utilisé un NSDateFormatter plutôt que du parsing manuel de la String.
Effectivement, oui, mais seulement presque.
Moi, j'ai supposé que les strings des dates pourrait être en format non-standard ou que l'iBidule de l'utilisateur utilise une autre locale que français.
Heureusement, si mon orthographe des noms des mois et égale à ça des données de helio, après expérimentation (en Swift) :
C'est vachement plus jolie 8--)
Je pense que c'est encore mieux si tu sors le DateFormatter du closure. à‰vitant n alloc/init à chaque fois, ce qui est le plus coûteux dans le DateFormatter. C'est du pinaillage, mais bon.
Et t'as raison là Du coup, le code le plus correct :
Merci à vous !
ça fonctionne bien, en revanche je fais comment pour récupérer mes données à partir de sortedProducts ?
je n'ai plus de value(forkey: ) pour sortedProducts.
Merci.
Tu as zappé un truc.
let products est un array d'objects de classe Products.
let sortedProducts est un array d'objects de classe Products.
Donc
let productN = sortedProduct[n]
Et c'est bon.