我目前正在使用CoreData进行模型的本地存储。我已成功实现了NSfetchedResultsController来管理tableView中数据的检索和呈现。
我希望数据按当地日期分组。所以每个部分都将是一个独特的当地日。与大多数聊天应用类似。
我知道除了时间戳之外,我还可以在managedObject中保存日期属性,并将其用作sectionNameKeyPath,但是当用户更改其设备上的时区时,这将不起作用。在这种情况下,我将返回并更改coreData中的每个条目并更改本地日期条目。
考虑到时区变化的可能性,是否有更简单的方法来实现白天的组织?
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Blog")
let blogSort = NSSortDescriptor(key: "dateCreated", ascending: true)
request.sortDescriptors = [blogSort]
fetchedResultsController = NSFetchedResultsController(fetchRequest: request, managedObjectContext: context, sectionNameKeyPath: "localDate", cacheName: nil)
在此示例中,dateCreated是博客创建日期的时间戳,localDate是实际日历日期。
答案 0 :(得分:1)
这不是您问题的答案。但我认为这对你有帮助。
let date = Date.init()
let dateFormatter = DateFormatter.init()
dateFormatter.dateStyle = .short
let stringDate = dateFormatter(stringFrom: date)
然后,您可以将此字符串另存为localDate
。{/ p>。{/ 1}
managedObject
答案 1 :(得分:1)
我会在Blog
类中使用计算属性。这就是我如何处理这个
localCreateDate: Date
,并通过使用本地时区将存储的创建日期解析为Date实例来计算它。localCreateDate
作为sectionNameKeyPath
,请参阅this answer或this by Martin R