【发布时间】:2015-09-28 20:39:40
【问题描述】:
我想问如何按日期对数据(部分)进行分组?
这是我的代码:
import UIKit
import CoreData
class TableViewController: UITableViewController {
var myList = []
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
let appDel : AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context : NSManagedObjectContext = appDel.managedObjectContext!
let freq = NSFetchRequest(entityName: "Item")
myList = context.executeFetchRequest(freq, error: nil)!
tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myList.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableViewCell
var object : NSManagedObject = myList[indexPath.row] as! NSManagedObject
let name = object.valueForKeyPath("name") as! String
let qty = object.valueForKeyPath("qty") as! Int
let date = object.valueForKeyPath("date") as! String
cell.nameLabel.text = name
cell.qtyLabel.text = toString(qty)
cell.dateLabel.text = date
return cell
}
}
详细:
现在我的日期样本只是行(默认只有 1 节)
示例:
apple 1 Jul 10, 2015 (row 1)
orange 7 Jul 10, 2015 (row 2)
grape 5 Jul 11, 2015 (row 3)
我想按日期分组,所以结果如下:
Jul 11, 2015 (section 1)
grape 5 (row 1)
Jul 10, 2015 (section 2)
apple 1 (row 2)
orange 7 (row 3)
注意:部分是动态的,取决于数据,并且排序日期降序
有人有解决办法吗?谢谢之前
【问题讨论】:
-
我推荐使用
NSFetchedResultsController。 Apple docs 描述得很好并且有样板代码。 -
你有在 Swift 代码中使用 NSFetchedResultsController 的示例吗?
-
我现在不在我的 MacBook 上,我可以稍后发布。或者,我很确定如果您使用 Apple 的 Master-Detail 模板创建一个新项目,并选择“使用 CoreData”,那么样板将被复制到主视图控制器 swift 文件中。
-
同时,您还有一个额外的困难 - 您的
date的排序顺序将不合逻辑,因为它将被排序为字符串而不是日期。我建议将该字符串重新排列为 yyyy-mm-dd 格式,这样可以很好地排序,然后将其操作为您喜欢的格式以进行显示。 -
也许这有点帮助:stackoverflow.com/a/30544650/1187415.
标签: ios swift core-data tableview grouping