gpt4 book ai didi

swift - 使用 NSSortDescriptor 对一对多关系的 NSSet 类型的数据进行排序

转载 作者:行者123 更新时间:2023-11-28 08:50:46 27 4
gpt4 key购买 nike

考虑以下数据模型:

entity:                            entity:
- Order - Product
attribute: attribute:
- date - productName
- orderName
relationship: relationship:
- products <<—- many-to-many —->> - orders

我想显示按订单日期排序的所有产品,如果有多个订单与一个产品关联,则按最早的订单日期排序。所有没有订单的产品都应最后显示。

我不知道如何使用 NSSortDescriptor 执行此操作。显然,我可以获取所有产品数据,转换订单(NSSet 类型)以确定最早日期,然后按订单日期对产品进行排序。虽然我无法以这种方式实现它,但它也不能与 NSFetchedResultsController 一起使用来在 UITableView 中显示产品,并且可能非常非常非常低效。

我怎样才能以更有效的方式进行这种排序,因为它也可以使用 SQL?如果需要,应该如何修改 NSFetchedResultsController?类似于下面的代码:

let fetchRequest = NSFetchRequest(entityName: “Product”)
let sortDescriptor1 = NSSortDescriptor(key: “product.order.date … ????”, descending:
let sortDescriptor2 = NSSortDescriptor(key: “product WITHOUT order … ????”, descending:

fetchRequest.predicate = NSPredicate(format: “productName contains[cd] %@", “A”)
fetchRequest.sortDescriptors = [sortDescriptor1,sortDescriptor2]

let fetchedResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)

在 cellForRowAtIndexPath 中获取数据

let product = fetchedResultController.objectAtIndexPath(indexPath) as! Product

最佳答案

似乎不可能根据另一个实体的属性(NSSet 类型)对一个实体进行排序。原因是 FRC 一次只监视一个 Entity,无法进行更复杂的排序。

目前,我从 Core Data 切换到 Realm,问题很容易解决(还有其他几个我可以解决的问题)。

关于swift - 使用 NSSortDescriptor 对一对多关系的 NSSet 类型的数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com