gpt4 book ai didi

ios - 通过 NSDate 对元素进行排序并添加到 UITableView

转载 作者:搜寻专家 更新时间:2023-10-30 22:15:23 26 4
gpt4 key购买 nike

在我什至开始问我的问题之前,我想添加一点注释 - 我不是在要求代码。我现在想明确说明这一点,因为有些人可能会认为这个问题作为代码请求。我正在寻求关于如何实现这一目标的想法,我不希望别人为我这样做。

最近,我开始接触 Core Data,并且遇到了一个独特的问题,我正在解决这个问题。我有一些子类 NSManagedObject 的对象,它们具有三个属性,其中一个与这种情况相关 - dueDate,它属于 NSDate 类型>。我一直在努力寻找一种方法来对子类化对象进行排序,然后将其添加到 UITableView 中的五个不同部分之一,其中包括:

  1. 今天
  2. 明天
  3. 一周
  4. 一个月
  5. 超过一个月

使用这个函数对元素进行排序:

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 中插入一次?

最佳答案

我会考虑稍微移动您的逻辑,并使用获取的结果 Controller 来处理分段。

要使用抓取结果 Controller ,请创建抓取并按日期添加排序描述符。这将是一个简单的列表,您可以先开始工作。

然后,为您的子类添加一个 transient 属性,您应该返回对象所属部分的字符串(结果可以缓存,因此您不会一直重新计算它)。将此 transient 属性的名称设置为 FRC 上的节名称键路径。

关于ios - 通过 NSDate 对元素进行排序并添加到 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30006120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com