Format sectionNameNameKeyPath NSFetchedResultsController – Swift

sectionNameKeyPath de formater ma sectionNameKeyPath pour mon fetch de données principal en utilisant un atsortingbut NSDate stocké. Il fonctionne pleinement et tire / sortinge les loggings dans des sections basées sur le NSDate mais je ne suis pas sûr comment le formater pour l'afficher par jj-mm-aaaa.

Je sais comment formater NSDate en utilisant:

 let date = NSDate(timeIntervalSince1970:myTimeInterval) let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "dd-MM-yyyy" 

Ma requête d'extraction en cours utilisant l'atsortingbut de données de base sectionDate comme section de sectionNameKeyPath

FETCH

 let fetchRequest = NSFetchRequest(entityName: "VisitDetails") let primarySortDescriptor = NSSortDescriptor(key: "dateDue", ascending: false) let sortDescriptors = [primarySortDescriptor] fetchRequest.sortDescriptors = sortDescriptors let frc = NSFetchedResultsController( fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: "dateSections", cacheName: nil) frc.delegate = self 

Donc, pour clarifier, je veux formater la sortie et sortinger juste le jj-MM-yyy. Actuellement, il ressemble à

entrez la description de l'image ici

Je suppose qu'un piratage est en train de créer un atsortingbut supplémentaire et d'entrer une string formatée, puis de l'utiliser pour afficher les résultats?

Je l'ai juste fait pour un projet sur lequel je travaille. Voici ce que j'ai fait:

Facultatif, mais fortement recommandé, est de mettre en place mogenerator. Il y a un tutoriel ici pour configurer votre projet de données de base pour l'utiliser.

Indépendamment, dans votre model de données, assurez-vous que vous avez une sous-class NSManagedObject associée à l'entité. Si vous ne l'avez pas déjà fait, et que vous n'utilisez pas mogenerator, vous pouvez le faire à la manière d'Apple .

Dans votre class VisitDetails, ajoutez:

 var formattedDateDue: Ssortingng { get { let dateFormatter = NSDateFormatter() // Apple suggested locale-aware technique: // dateFormatter.dateStyle = .ShortStyle // dateFormatter.timeStyle = .NoStyle // ..or to stick to your original question: dateFormatter.dateFormat = "dd-MM-yyyy" return dateFormatter.ssortingngFromDate(self.dateDue) } } 

(En supposant que vous voulez que vos sections soient groupées à la date de dateDue, sinon faites l'atsortingbut calculé pour votre atsortingbut dateSections.) Vous modifiez ensuite votre controller de résultats récupérés ci-dessus pour utiliser l'atsortingbut calculé:

 let frc = NSFetchedResultsController( fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: "formattedDateDue", cacheName: nil) 

Et c'est tout ce qu'il y a à faire!