我有領域數據庫,其中包含數據和添加此數據的日期。我想解釋這一點,並設置日期作爲表視圖節標題和數據作爲每個部分的行數據取決於日期。我知道如何提取,但不知道如何按日期進行分組,並根據日期設置每個部分的數據。謝謝!iOS按領域按日期分組查看部分
4
A
回答
-8
您可以使用CoreData作爲替代領域,並使用讀取的結果控制,使您可以通過一些變種的數據和組排序。
3
您可以按日期對檢索到的Results
進行排序,然後在迭代時對它們進行拆分,以便按照分組/層次的方式對其進行訪問。
class Person {
dynamic var name = ""
dynamic var date = NSDate()
}
let sortedObjects = realm.objects(Person).sorted("date")
var lastDate = objects.first?.date
let calendar = NSCalendar.currentCalendar()
var lastGroup = [Person]()
var groups = [[Person]]()
for element in sortedObjects {
let currentDate = element.date
let difference = calendar.components([.Year, .Month, .Day], fromDate: lastDate!, toDate: currentDate, options: [])
if difference.year > 0 || difference.month > 0 || difference.day > 0 {
lastDate = currentDate
groups.append(lastGroup)
lastGroup = [element]
} else {
lastGroup.append(element)
}
}
groups.append(lastGroup)
注:這樣一來,你就需要保持在內存中所有的元素。如果不適合你,根據你的使用情況,你可以只記住索引,而你可以使用它來訪問檢索到的Results
中的元素。
0
如果有人與雨燕3.0語法戰鬥:
var lastDate = dateObjects.first?.start
let calendar = Calendar.current
var lastGroup = [DateObject]()
var days = [[DateObject]]()
for dateObject in dateObjects {
let currentDate = dateObject.start
let unitFlags : Set<Calendar.Component> = [.era, .day, .month, .year, .timeZone]
let difference = calendar.dateComponents(unitFlags, from: lastDate!, to: currentDate)
if difference.year! > 0 || difference.month! > 0 || difference.day! > 0 {
lastDate = currentDate
days.append(lastGroup)
lastGroup = [travelTime]
} else {
lastGroup.append(dateObject)
}
}
days.append(lastGroup)
1
我有完全相同的問題,我需要在一個分區表中顯示一種Realm實體,按日期分組,這就是我如何做到的。
包含日期字段Example類:
final class Appointment: Object {
@objc dynamic var id: Int = 0
@objc dynamic var date: Date?
}
示例代碼,將得到所有的對象和他們的部分/結果拆分,通過獨特的日期分組:
// (un)safely get an instance of Realm
let realm = try! Realm()
// get all the dates
// note that begginingOfDay is a extension on Date
// which gives back the beggining of the day of the given Date as a Date
// we are doing this in order to filter out non-unique dates later
let dates = self.realm.objects(Appointment.self).toArray().flatMap({ $0.date ?? nil }).map({ $0.beginningOfDay() })
// cast it to a Set to make values unique, and back to an Array for further use
let uniqueDates = Array(Set(dates))
let predicates = uniqueDates.map({ date -> NSPredicate in
// in order to use Swift's Date with NSPredicate
// it must be casted to NSDate
let begginingOfDay = date.beginningOfDay() as NSDate
let endOfDay = date.endOfDay() as NSDate
// create a predicate that checks if the given Date is in between
// the beggining of a given Date and the end of the given Date
let predicate = NSPredicate(format: "(date >= %@) AND (date <= %@)", begginingOfDay, endOfDay)
return predicate
})
// create an array of Results<Appointment>, and then use it to drive your table/collection view
// I will leave this part to you, depends on your UI implementation
// personally, I wrap this into another object that contains results, section index, section title, etc.
// and then I use all of that in my table view's data source methods
let sectionedResults: [Results<Appointment>] = predicates.map({ predicate -> Results<Appointment> in
let results = realm.objects(Appointment.self).filter(predicate)
return results
})
您現在應該有一個粗略的想法如何做到這一點,我將把UI實現的細節留給你。
相關問題
- 1. 按日期分組,看看日期是否爲今天?
- 2. 按空組分組日期
- 3. 分組跨領域日期在SQL
- 4. Tableview部分按日期
- 5. SQL查詢按日期分組時間
- 6. MySql查詢 - 按日期範圍分組?
- 7. NHibernate投影查詢按日期分組
- 8. 按日期分組排序
- 9. 按日期分組ID
- 10. 不按日期分組?
- 11. MySQL:按日期分組RANGE?
- 12. 按月分組SAS日期
- 13. SQL按周分組日期
- 14. mySQL DateDiff按日期分組
- 15. 如何按日期按季度分組
- 16. MongoDB:按日期時間查詢部分日期時間
- 17. 如何按星期分組日期?
- 18. 按星期,月份,日期分組
- 19. iOS分組按鈕
- 20. MDX查詢按日期按參數分組,具有天數
- 21. 按月份和星期分組,按日期時間列分組,按每月或每週的第一個分組
- 22. Mysql查詢 - 在5分鐘內按日期時間段分組
- 23. 按日期/時間的一部分#2
- 24. 如何按日期範圍分組
- 25. 在linq中按日期分組
- 26. Telerik MVC Grid - 按日期分組
- 27. solrj中按日期字段分組
- 28. 分組結果按日期在MySQL
- 29. 分組按日期存儲爲VARCHAR2
- 30. SQL如何按日期範圍分組
這是如何被接受的答案?問題是如何在Realm中實現這一點... – SiPe