如何在 Swift 的 collectionView 中显示每个类别的多个类别?
Posted
技术标签:
【中文标题】如何在 Swift 的 collectionView 中显示每个类别的多个类别?【英文标题】:How to show multiple categories per category in a collectionView in Swift? 【发布时间】:2019-05-08 12:36:02 【问题描述】:我需要在集合视图中为每个类别显示多个类别,因为在 CoreData 中一个类别有很多类别,并且类别设置为 NSset 类型 写这行的时候
fetchRequest.predicate = NSPredicate(format: "category.categories == %@", (category?.categories!)!)
它抛出一个错误 CoreData: error: SQLCore dispatchRequest: exception handling request: , to-many key not allowed here with userInfo of (null)
【问题讨论】:
你可以使用predicateWithBlock:
(但是更贵)。
什么是categories
?
它是 NSManagedObject ,一种递归关系,通过它我有一个包含子类别的类别我需要在 collectionView 中显示这些子类别
它不起作用,因为您的谓词中的 %@ 将包含对象的 description
信息(在您的情况下为数组)。获取所有这些然后filter ...
【参考方案1】:
每次您需要在获取时进行过滤时,您不必使用NSPredicate
的格式字符串(但这是最便宜的解决方案 - 请记住)。
你可以使用predicateWithBlock
初始化器:
fetchRequest.predicate = NSPredicate object, bindings -> Bool in
guard let object = object as? Category else return false
return object.categories == category?.categories
甚至Array.filter
:
guard let allCategories = try? moc.executeFetchRequest(fetchRequest) as? [Category] else return
let result = allCategories.filter $0.categories == category?.categories
【讨论】:
使用第一个代码时出现此错误'Unknown predicate type for predicate: BLOCKPREDICATE'以上是关于如何在 Swift 的 collectionView 中显示每个类别的多个类别?的主要内容,如果未能解决你的问题,请参考以下文章
CollectionViews和TableView不在StackView中显示 - Swift 4