我正在尝试使用 XMPP 实现聊天应用程序。 我试图仅按日期对消息进行分组,但时间戳包含“日期和时间”。
有人可以帮我解决这个问题吗?
lazy var fetchController: NSFetchedResultsController<NSFetchRequestResult>? = {
if let fetchRequest = self.xmppManager?.getFetchRequestForArchievedMessages(nil), let moc = self.xmppManager?.getXMPPMocForMessages() {
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: moc, sectionNameKeyPath: "timestamp", cacheName: nil)
fetchedResultsController.delegate = self
return fetchedResultsController
}
return nil
}()
提前致谢。
按照建议,我编写了计算属性
extension XMPPMessageArchiving_Message_CoreDataObject {
var dateAsSection: String {
get {
return self.timestamp.toString(withFormat: "dd/mm/yyyy")
}
}
但以
结束Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ valueForUndefinedKey:]: the entity XMPPMessageArchiving_Message_CoreDataObject is not key value coding-compliant for the key "dateAsSection".'
最佳答案
终于找到解决办法了。感谢@Joakim Danielson 帮助我。
lazy var fetchController: NSFetchedResultsController<NSFetchRequestResult>? = {
if let fetchRequest = self.xmppManager?.getFetchRequestForArchievedMessages(nil), let moc = self.xmppManager?.getXMPPMocForMessages() {
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: moc, sectionNameKeyPath: **#keyPath(XMPPMessageArchiving_Message_CoreDataObject.dateAsSection)**, cacheName: nil)
fetchedResultsController.delegate = self
return fetchedResultsController
}
return nil
}()
必须将计算属性添加到扩展中
extension XMPPMessageArchiving_Message_CoreDataObject {
@objc var dateAsSection : Date {
get {
return self.timestamp.toString(withFormat: "dd/MM/yyyy").toDate(withFormat: "dd/MM/yyyy")!
}
}
}
为我工作...
关于ios - 如何使用 xmpp 在 swift 中按日期对聊天消息进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59182972/