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 à
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!