Ios UITableView部分标题
我正在尝试使用解析对象中的部分创建UITableView。我成功地解析了对象。然而,我不知道如何或什么样的最好的方式来获得日期的对象创建我的部分标题将是 若我有一个对象数组,那个么我应该只创建一个日期列表吗?我如何将其与日期联系起来,以及对象应在该日期之下 我曾考虑使用带有日期和项目变量的结构来保存数据清理器,但我也不知道这样做是否可行 有什么建议/例子可以说明最好的方法是什么 编辑:Ios UITableView部分标题,ios,uitableview,Ios,Uitableview,我正在尝试使用解析对象中的部分创建UITableView。我成功地解析了对象。然而,我不知道如何或什么样的最好的方式来获得日期的对象创建我的部分标题将是 若我有一个对象数组,那个么我应该只创建一个日期列表吗?我如何将其与日期联系起来,以及对象应在该日期之下 我曾考虑使用带有日期和项目变量的结构来保存数据清理器,但我也不知道这样做是否可行 有什么建议/例子可以说明最好的方法是什么 编辑: 按日期按升序对数组数据进行排序 声明PFObject的数组数组(或PFObject子类,如果有):var ta
PFObject
的数组数组(或PFObject子类,如果有):var tableData:[[PFObject]]()
要获取每个节的节头,您可以使用该节数组中第一个对象的日期,因为该节中的所有对象都有相同的日期。节中的所有项目都有相同的日期吗?是的,这就是目标,将具有相同日期的项目分组在一个部分中。因此,我需要为每个部分创建一个数组?是的,这是最简单的方法;这就是我的代码所做的。你也可以使用字典,但这更难,因为字典是无序的,所以你需要创建一个排序键数组。好的,我唯一的问题是如果我不知道会有多少个数组。你不需要知道会有多少个数组
self.tableData.count
是arraysAh的编号,很抱歉我忽略了这一部分。我会试一试的,谢谢!
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)
}
}
})
}
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
}