我从Foo 到Foo 的类型转换遇到问题。

static func castToChannelViewModel(data: [CategoriesSectionInfo<AnyObject>]) {
    var result = [CategoriesSectionInfo<ChannelViewModel>]()

    for item in data {
        if item is CategoriesSectionInfo<ChannelViewModel> {
            result.append(item as CategoriesSectionInfo<ChannelViewModel>)
        }
    }
}


即使我检查这种类型是否正确,我也有这样的错误:

无法强制转换类型为CategoriesSectionInfo 的值以类型为'CategoriesSectionInfo

最佳答案

AFAIK,你做不到。至少我不知道怎么做。
(您也无法在Java中执行类似的操作,但可以在其中使用Foo<T extends Bar>

尝试这个

let cannelViewModel = CategoriesSectionInfo<ChannelViewModel>(item)


要么

result.append(CategoriesSectionInfo<ChannelViewModel>(item))


分别。

您可能必须在item之前加上一些前缀:。 Xcode将给您一些提示。

10-08 06:23