Prima ancora di iniziare a porre la mia domanda, vorrei aggiungere una piccola nota - Non sto chiedendo il codice. Desidero dichiararlo esplicitamente adesso, poiché alcuni potrebbero percepire questa domanda come una richiesta di codice. Sto chiedendo idee su COME per raggiungere questo obiettivo, non voglio che qualcun altro lo faccia per me.Ordina elementi tramite NSDate e aggiungi a UITableView
Recentemente, sono entrato in Core Data, e ho riscontrato un problema univoco che ho problemi di risoluzione. Ho alcuni oggetti sottoclasse NSManagedObject
e hanno tre proprietà, una delle quali è rilevante per questa situazione - dueDate, che è del tipo NSDate
. Ho lavorato per trovare un modo per ordinare gli oggetti sottoclasse, e quindi aggiungere poi in uno dei cinque diverse sezioni del UITableView
, che comprendono:
- Oggi
- Domani
- Una settimana
- Un mese
- più di un mese
Ordinamento degli elementi lavora con questa funzione:
func fetchAssignments() {
let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext!
let fetchRequest = NSFetchRequest(entityName:"Assignment")
var error: NSError?
let fetchedResults =
managedContext.executeFetchRequest(fetchRequest,
error: &error) as! [NSManagedObject]?
if let results = fetchedResults {
let calendar: NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let todayDate = calendar.startOfDayForDate(NSDate())
for item in results {
let dueDate = item.valueForKey("dueDate") as! NSDate
println(dueDate)
let calendarComponents = calendar.components(.CalendarUnitYear | .CalendarUnitMonth | .CalendarUnitDay,
fromDate: todayDate, toDate: dueDate, options: nil)
println("Months: " + calendarComponents.month.description)
println("Days: " + calendarComponents.day.description)
if calendarComponents.month >= 2 || (calendarComponents.month == 1 && calendarComponents.day > 0) {
println("Greater")
} else if calendarComponents.month == 1 || calendarComponents.day > 7 {
println("One Month")
} else if calendarComponents.day > 1 {
println("One Week")
} else if calendarComponents.day == 1 {
println("Tomorrow")
} else {
println("Today")
}
}
println()
tableView.reloadData()
} else {
println("Could not fetch \(error), \(error!.userInfo)")
}
}
Attualmente, questa funzione non utilizzare il mio scopo sottoclassi, ma che non dovrebbe avere alcun effetto diverso da quello della necessità di lanciare il valore come un oggetto NSDate
.
La mia domanda è, come posso inserire questi oggetti nel UITableView
. Capisco che questa è una domanda abbastanza ampia, ma onestamente non so cos'altro fare. Ho provato a utilizzare più array, uno per ogni categoria, ma non ha funzionato bene - se uno degli array è vuoto, sorgono problemi. Come posso ordinare questi oggetti in modo che possano essere inseriti e eliminati una volta nello UITableView
?
Questo codice sembra familiare :) –
Ecco un esempio di progetto da Apple che dimostra come raggruppare una vista tabella in sezioni basate sulla data: https://developer.apple.com/library/ios/samplecode/DateSectionTitles/ Introduzione/intro.html.Ed ecco una domanda simile (in Objective-C): http://stackoverflow.com/questions/20249098/how-to-implement-table-sections-with-core-data. –
@ MartinR Mi è servito bene, stavo discutendo se dovevo collegare la mia domanda CodeReview ma ho deciso contro. : P Analizzerò il progetto di Apple e quello che Wain ha detto, grazie mille per il continuo aiuto. – Jeffrey