Jef*_*rey 6 sorting core-data uitableview ios swift
在我开始提出问题之前,我想补充一点注意事项 - 我不是要求代码.我想明确说明现在,因为有些人可能认为这个问题是对代码的请求.我在寻求关于如何实现这一目标的想法,我不希望别人为我这样做.
最近,我已经深入了解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)")
}
}
Run Code Online (Sandbox Code Playgroud)
目前,此函数不使用我的子类化对象,但除了需要将值转换为对象之外,它不应该有任何效果NSDate
.
我的问题是,如何将这些对象插入到UITableView
.我知道这是一个相当广泛的问题,但老实说,我不知道还能做什么.我已经尝试过使用多个数组,每个类别一个,但是效果不好 - 如果其中一个数组为空,则会出现问题.如何对这些对象进行排序,以便它们可以插入和删除一次UITableView
?
我会考虑稍微移动您的逻辑,并使用获取的结果控制器来处理分段。
要使用获取结果控制器,请创建获取并按日期添加排序描述符。这将是一个简单的列表,您可以先开始工作。
然后,向您的子类添加一个瞬态属性,然后您应该返回该对象所属部分的字符串(可以缓存结果,这样您就不会一直重新计算它)。将此瞬态属性的名称设置为 FRC 上的节名称键路径。
归档时间: |
|
查看次数: |
306 次 |
最近记录: |