【问题标题】:How to group chat message by date in swift using xmpp?如何使用 xmpp 按日期快速分组聊天消息?
【发布时间】:2020-03-29 15:59:25
【问题描述】:

我正在尝试使用 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")
    }
} 

但以

结束

由于未捕获的异常“NSUnknownKeyException”而终止应用程序, 原因: '[ valueForUndefinedKey:]:实体 XMPPMessageArchiving_Message_CoreDataObject 不是键值 键“dateAsSection”的编码兼容。'

【问题讨论】:

  • 尝试添加一个只返回时间戳属性的日期部分的计算属性
  • 我试过你的过程,但它给了我这个错误---由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[ valueForUndefinedKey:]:实体 XMPPMessageArchiving_Message_CoreDataObject 不是键值键“dateAsSection”的编码兼容。'

标签: ios swift core-data xmpp chat


【解决方案1】:

终于解决了。感谢@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")!
    }
}
}

为我工作...

【讨论】:

    猜你喜欢
    • 2022-06-29
    • 2013-08-28
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2016-02-25
    • 2014-01-05
    • 2013-03-26
    相关资源
    最近更新 更多