Ich bin eine neue Hand zu Core Data, ich weiß nicht, wie man einige Abfrage Satz für NSPredate und einige Probleme zu treffen. Bitte helfen zu finden mein Problem und geben Sie mir einen Vorschlag, um mein Abfrageziel zu erreichen. Zum Beispiel, jetzt habe ich eine Tabelle, es hat einige Daten. (Wie das Bild zeigt) My databaseIch weiß nicht, wie ich meinen Abfrage-Satz auf Core-Daten mit NSPredicate
Die Daten in der Tabelle mit dem Monat Attribut "2015/03/01 00:00:00 ". Nun möchte ich ein Datum abfragen, welcher Monat mit 2015/03 beginnt, ich code" fetchRequest.predicate = NSPredate (Format: "Monat BEGINSWITH [cd]% @/0% @ ", Jahr, Monat)" oder "fetchRequest.predicate = NSPredate (Format:" Monat LIKE [c]% @/0% @ ", Jahr, Monat), habe ich recht? (Jahr = 2015, Monat = 03) Wenn nicht, ich hoffe wirklich, dass mir jemand helfen kann d eine andere Frage ist die ‚cd/c‘ in [] bedeutet, was ist es, Strukturen setzen Sie den Code wie folgt:?
func remove(model:MonthlySummery) -> Int {
let cxt = self.managedObjectContext!
let entity = NSEntityDescription.entityForName("MonthlySummery", inManagedObjectContext: cxt)
let component = NSCalendar.currentCalendar().components([.Year,.Month], fromDate: model.month!)
let year = component.year
let month = component.month
let fetchRequest = NSFetchRequest()
fetchRequest.entity = entity
NSLog("month == %i/0%i", year,month)
fetchRequest.predicate = NSPredicate(format: "month BEGINSWITH[cd] %@/0%@", year,month)
do{
let listData = try cxt.executeFetchRequest(fetchRequest) as NSArray!
if listData.count > 0 {
let dailyRecord = listData.lastObject as! NSManagedObject
cxt.deleteObject(dailyRecord)
if cxt.hasChanges {
try cxt.save()
}
}
} catch {
NSLog("Remove failure!")
let nserror = error as NSError
NSLog("Error: \(nserror), \(nserror.userInfo)")
}
return 0
}
Danke @ Mundi, ich es, jetzt, ich habe eine andere Idee, dieses Problem zu lösen, werde ich um meine Datenbank zu rekonstituieren, indem ich das Monatsattribut von NSDate zu String ändere, weil ich jedes gewünschte Format über NSDataFormatter einstellen kann. Zum Beispiel, wenn ich eine Monatszeichenkette haben möchte, kann ich dateFormat = "yyyy-mm" setzen, wenn ich eine Tageszeichenkette haben möchte Kann ich dataFormat = "yyyy-mm-dd" einstellen. Meinst du das? – Jixes
Wie gesagt, dies ist eine potenziell katastrophale Idee. Sie sollten NSDate verwenden, das zur Darstellung von Daten verwendet wird. Saiten sind nicht sehr gut, diesen Job zu machen. – Mundi
Hör mir zu, wenn ich NSDate verwenden, um Daten darzustellen, werde ich nicht wissen, wie Prädikat Satz.NSDate Standardformat ist "2015/04/12 00:00:00". Nun, wenn ich abfragen möchte Daten an einem Tag, ich brauche nicht "00:00:00" in "2015/04/12 00:00:00". Wenn ich Daten im Monat abfragen muss, brauche ich nicht "/ 12 00 : 00: 00 "in" 2015/04/12 00:00:00 ", brauchen Sie nur" 2015/04 ", verstehst du? Oder können Sie mir beibringen, den Abfrage-Satz zu codieren? Ich werde Ihnen sehr dankbar sein – Jixes