首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有类似于iMessage的表的iMessage

具有类似于iMessage的表的iMessage
EN

Stack Overflow用户
提问于 2016-06-17 06:15:26
回答 1查看 78关注 0票数 1

我有核心数据库。结构在图像上(DBContact有许多带有属性messages的DBMessages,每个DBMessage与属性contact有一个接触):

我希望显示按联系人分组并按日期排序的邮件。因此,行数必须是=与消息的联系人数。在每一行中,我都要显示头像、联系人的nameAndSurname以及该联系人的最后消息的文本和日期。

我找到的唯一解决办法是:

代码语言:javascript
复制
    let entityName = kDBOrder
        let entityDescription = NSEntityDescription.entityForName(entityName, inManagedObjectContext: managedObjectContext)
        let fetchRequest = NSFetchRequest()
        fetchRequest.entity = entityDescription
        fetchRequest.fetchBatchSize = 20
        // sort
        fetchRequest.sortDescriptors = [NSSortDescriptor(key: "contact.id", ascending: false), NSSortDescriptor(key: "date", ascending: false)]
        let sectionNameKeyPath: String? = "contact.id"
        self.fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: sectionNameKeyPath, cacheName: nil)
       fetchedResultsController!.delegate = self
       if tableViewMain != nil {
          do {
             try fetchedResultsController!.performFetch()
          } catch {
             print("An error occurred in fetchresultcontroller")
          }
          tableViewMain.reloadData()
       }

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        var count = 0
        if let sections = fetchedResultsController?.sections {
            let currentSection = sections[section]
            count = currentSection.numberOfObjects
            // in each section we must have only 1 row
            if count > 0 {
                count = 1
            }
        }
        return count
    }

但在这种情况下,联系人将按id排序,但我需要按最后消息的日期对它们进行排序。但是,如果我将sortDescriptors更改为fetchRequest.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false), NSSortDescriptor(key: "contact.id", ascending: false)],使其首先按日期排序,它将无法正确显示联系人。有谁想过如何实现这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-17 06:53:49

我可能会改变模型,使生活更容易,并做一些更早的处理。基本上,如果在两个实体之间添加另一个关系,1到1,并且每次添加新消息时都会更新该关系--所以您总是有一个指向最新消息的直接指针。

一旦您这样做,您的FRC和您的表加载速度是微不足道的,因为您只是在获取中使用联系人。新消息也被正确地处理,因为关系会被更新,所以联系人会改变,FRC会看到它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37874392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档