Zanim jeszcze zacznę zadawać moje pytanie, chciałbym dodać małą notatkę - Nie proszę o kod. Chcę wyraźnie stwierdzić, że teraz, ponieważ niektórzy mogą postrzegać to pytanie jako żądanie kodu. Pytam o pomysły na JAK to osiągnąć, nie chcę, aby ktoś inny zrobił to za mnie.Sortowanie elementów za pomocą NSDate i dodawanie do UITableView
Niedawno dostałem się do Core Data, a ja doświadczam jednego wyjątkowego problemu, że mam poważne problemy w rozwiązywaniu. Mam kilka obiektów podklasy NSManagedObject
i mają trzy właściwości, z których jedna jest związana z tą sytuacją - należnaData, która jest typu NSDate
. pracuję znaleźć sposób sortowania obiektów instacji, a następnie dodać potem do jednej z pięciu różnych sekcji w UITableView
, które obejmują:
- Today
- Jutro
- One Week
- Miesiąc
- dłużej niż jeden miesiąc
sortowanie elementów współpracuje z tej funkcji:
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)")
}
}
Obecnie funkcja ta nie wykorzystuje mojego obiektu podklasy, ale to nie powinno mieć żadnego wpływu innego niż potrzeba do oddania wartość jako NSDate
obiektu.
Moje pytanie brzmi: jak mogę wstawić te obiekty do UITableView
. Rozumiem, że to dość szerokie pytanie, ale szczerze mówiąc nie wiem, co jeszcze mogę zrobić. Próbowałem używać wielu tablic, po jednej dla każdej kategorii, ale to nie zadziałało dobrze - jeśli jedna z tablic jest pusta, pojawiają się problemy. W jaki sposób mogę posortować te obiekty, aby mogły zostać usunięte i usunięte raz w UITableView
?
Ten kod wygląda znajomo :) –
Oto przykładowy projekt firmy Apple demonstrujący sposób grupowania widoku tabeli na sekcje na podstawie daty: https://developer.apple.com/library/ios/samplecode/DateSectionTitles/ Wprowadzenie/Intro.html.I tutaj jest podobne pytanie (w Objective-C): http://stackoverflow.com/questions/20249098/how-to-implement-table-sections-with-core-data. –
@MartinR To mi dobrze służyłem, debatowałem, czy powinienem połączyć moje pytanie CodeReview, ale zdecydowałem się odrzucić. : P Zajrzę do projektu Apple'a i tego, co powiedział Wain, bardzo dziękuję za dalszą pomoc. – Jeffrey