Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 泛型类型与另一个泛型类型_Ios_Swift_Xcode - Fatal编程技术网

Ios 泛型类型与另一个泛型类型

Ios 泛型类型与另一个泛型类型,ios,swift,xcode,Ios,Swift,Xcode,我正在努力解决以下问题 我有一个名为FilteredCollection的类,它有两个泛型参数 CollectionSourceModel CollectionFilterObject CollectionFilterObject还需要一个与CollectionSourceModel相等的泛型参数。这类似于以下代码段: class FilteredCollection < CollectionSourceModel: CollectionItem,

我正在努力解决以下问题

我有一个名为
FilteredCollection
的类,它有两个泛型参数

  • CollectionSourceModel
  • CollectionFilterObject
CollectionFilterObject
还需要一个与
CollectionSourceModel
相等的泛型参数。这类似于以下代码段:

class FilteredCollection
    <
        CollectionSourceModel: CollectionItem,
        CollectionFilterObject: CollectionFilter<CollectionSourceModel>
    >:
    Collection<CollectionSourceModel>,
    CollectionFilterDelegate
 {
      let filterHandler: CollectionFilterObject
 }

我的模式是邪恶的吗?有没有更好的方法来解决这个问题?

是的,对于这个问题来说,这几乎肯定过于复杂了,而且似乎严重依赖子类化,而子类化往往很快就会产生问题。有很多很好的方法来构建这样的东西,但不清楚您的约束是什么。为什么有一个集合不是Swift的集合类型?为什么过滤器是对象而不仅仅是谓词(返回bool的闭包)?为什么存在“CollectionItem”类型?真的有必要吗?这个问题的一个小草图应该会导致一个更好的解决方案,它不需要所有这些子类。
class TheatreFilter: CollectionFilter<TheatreItem>
{
     // some filter stuff
}

class TheatreCollection: FilteredCollection<TheatreItem, TheatreFilter>
{
     // some collection operations
}
Command failed due to signal: Segmentation fault: 11