J'ai une application qui a plusieurs entrées de temps avec une date enregistrée comme NSDate.Filtre fetchRequest pour l'année/mois en utilisant NSPredicate
Je voudrais utiliser une requête d'extraction pour filtrer une année et un mois donnés d'un autre endroit. Comment puis-je utiliser NSPredicate pour filtrer pendant un an et un mois?
let predicate = NSPredicate(format: "%K == %D && %K == %D", ???, selectedMonth, ???, selectedYear)
Mise à jour
Utilisation de l'aide Raki a fait remarquer que je suis venu avec le code suivant:
var dateComp = DateComponents()
dateComp.year = Int(selectedYear)
dateComp.month = Int(selectedMonth)
dateComp.day = 1
let calendar = Calendar.current
let firstDayOfTheMonth = calendar.date(from: dateComp)
var oneMonth = DateComponents()
oneMonth.month = 1
let beginningOfNextMonth = calendar.date(byAdding: oneMonth, to: firstDayOfTheMonth!)
Et le prédicat:
let predicate = NSPredicate(format: "date >= %@ AND date < %@", firstDayOfTheMonth as! CVarArg, beginningOfNextMonth as! CVarArg)
Je reçois un SIGABRT avec le message suivant:
Could not cast value of type 'Foundation.Date' (0x1073a0ae0) to 'Swift.CVarArg' (0x1196851c8).
Xcode m'a suggéré d'ajouter "as! CVarArg »
Mise à jour 2
Le prédicat suivant travaillé maintenant:
let predicate = NSPredicate(format: "%K >= %@ && %K < %@", "date", firstDayOfTheMonth! as NSDate, "date", beginningOfNextMonth! as NSDate)
Quel est le format de date que vous enregistrez? – raki
J'utilise NSDate. Dans CoreData, tapez 'Date'. – sidetrax
il peut aider: http://stackoverflow.com/questions/13262567/how-to-build-a-nspredicate-filtering-all-days-in-a-month-using-nsdate – raki