我正在尝试使用Parse对象中的部分创建一个UITableView。我成功地拥有了Parse对象。但是,我不确定从对象中获取日期以创建我的部分标题的最佳方式是什么或者是什么。
如果我有一个对象数组,我应该通过并创建一个日期列表?我如何将其与日期联系起来,并且该对象应该在该日期之下
我正在考虑使用带有Date和Item变量的结构来保持数据更清晰,但我不知道我可以这样做吗
有关最佳方法的建议/示例吗?
编辑:
func getExpenses() {
let query = ExpenseItem.query()
query?.order(byDescending: "expenseDate")
query?.findObjectsInBackground(block: { (expenseResult, error) in
if error == nil {
var sectionArray = [ExpenseItem]()
for object in expenseResult as! [ExpenseItem] {
if let firstObject = sectionArray.first {
if Calendar.current.compare(firstObject.expenseDate, to: object.expenseDate, toGranularity: .day) != .orderedSame {
self.tableData.append(sectionArray)
sectionArray = [ExpenseItem]()
}
} else {
sectionArray.append(object)
}
}
if sectionArray.count != 0 {
self.tableData.append(sectionArray)
}
}
})
}
答案 0 :(得分:0)
PFObject
数组的数组(或者你的PFObject子类,如果有的话):var tableData: [[PFObject]]()
var sectionArray = [PFObject]()
// pfObjects contains the objects you retrieved from Parse, ordered by date
for object in pfObjects {
if let firstObject = sectionArray.first {
if object["dateField"] != firstObject["dateField"] {
self.tableData.append(sectionArray)
sectionArray = [PFObject]()
}
}
sectionArray.append(object)
}
if sectionArray.count != 0 {
self.tableData.append(sectionArray)
}
override func numberOfSections(in tableView: UITableView) -> Int {
return self.tableData.count
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.tableData[section].count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let item = self.tableData[indexPath.section][indexPath.row]
// deque a cell and configure it with item
}
要获取每个部分的部分标题,您可以使用该部分数组中第一个对象的日期,因为该部分中的所有对象具有相同的日期。