如何在 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

在 UITableViewCell 内的 uiCollectionViewCell 中显示 Json。斯威夫特 3

如何设置 UICollectionViewCell 大小

如何知道 UICollectionView 何时完成布局?

如何保持 CollectionView 单元格返回查看

如何将变量保存到 NSUserdefaults 而不会出现致命错误