簡體   English   中英

如何使用 xmpp 快速按日期對聊天消息進行分組?

[英]How to group chat message by date in swift using xmpp?

我正在嘗試使用 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”的鍵值編碼不兼容。

終於得到了解決方案。 感謝@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")!
    }
}
}

為我工作...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM