【发布时间】:2015-05-02 18:44:33
【问题描述】:
在我开始提问之前,我想补充一点 - 我不是要代码。我现在想明确说明这一点,因为有些人可能会理解这个问题作为对代码的请求。我正在寻求有关如何实现这一目标的想法,我不希望其他人为我这样做。
最近,我开始涉足 Core Data,我遇到了一个独特的问题,我需要解决一些重大问题。我有一些对象是NSManagedObject 的子类,它们具有三个属性,其中一个与这种情况相关 - dueDate,它的类型为NSDate。
我一直在努力寻找一种方法来对子类对象进行排序,然后将其添加到UITableView 中的五个不同部分之一,其中包括:
- 今天
- 明天
- 一周
- 一个月
- 超过一个月
使用此功能对元素进行排序:
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)")
}
}
目前,此函数不使用我的子类化对象,但除了需要将值转换为 NSDate 对象之外,它不会产生任何影响。
我的问题是,如何将这些对象插入UITableView。我知道这是一个相当广泛的问题,但老实说,我不知道还能做什么。我尝试过使用多个数组,每个类别一个,但效果不佳 - 如果其中一个数组为空,就会出现问题。如何对这些对象进行排序,以便它们可以在UITableView 中插入和一次?
【问题讨论】:
-
那段代码看起来很眼熟:)
-
这是一个来自 Apple 的示例项目,它演示了如何根据日期将表格视图分组为多个部分:developer.apple.com/library/ios/samplecode/DateSectionTitles/…。这是一个类似的问题(在 Objective-C 中):stackoverflow.com/questions/20249098/….
-
@MartinR 这对我很有帮助,我正在争论是否应该链接我的 CodeReview 问题,但决定反对。 :P 我会看看 Apple 的项目以及 Wain 所说的,非常感谢您一直以来的帮助。
标签: ios uitableview swift sorting core-data