ios - 如何使用 xmpp 在 swift 中按日期对聊天消息进行分组?

标签 ios swift core-data xmpp chat

我正在尝试使用 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/

相关文章:

core-data - 如何获取核心数据中现有实体(表)的列表

iphone - 如何确定我的应用程序支持的最旧的 iOS 版本?

iphone - 大量使用 NSLog 会产生成本吗?

algorithm - 检查一个点是否在一个简单的多边形内

ios - Xib 和 Storyboard

ios - Xcode DispatchQueue.main.async 在大循环内部还是外部?

ios - 如何将实时音频从iOS设备流传输到Wowza媒体服务器?

ios - 当设置为 false 时,Swift CollectionView 选择多个单元格

xcode - 核心蓝牙 Xcode

xcode - 如何在Xcode 4.0中为核心数据属性设置默认值?