声明在同一文件中时,枚举中的未声明类型

iha*_*ter 2 xcode ios swift

我试图做一个简单的数据类型存储的视频或图像+声音,但我得到的枚举编译错误"未申报类型的使用" MovieItemImageItem.怎么了?

struct MovieItem {
    let movieUrl: NSURL
}

struct ImageItem {
    let imageUrl: NSURL // UIImage?
    let soundUrl: NSURL
}

enum Item {
    case MovieItem(MovieItem) // Undeclared type: MovieItem
    case ImageItem(ImageItem) // Undeclared type: ImageItem
}
Run Code Online (Sandbox Code Playgroud)

Aar*_*sen 8

我认为编译器因使用MovieItema作为名称struct而被用作case标签内容而感到困惑Item.如果您更改case标签的名称,它应该工作:

struct MovieItem {
    let movieUrl: NSURL
}

struct ImageItem {
    let imageUrl: NSURL // UIImage?
    let soundUrl: NSURL
}

// Changed MovieItem to Movie and ImageItem to Image and it works
enum Item {
    case Movie(MovieItem)
    case Image(ImageItem)
}
Run Code Online (Sandbox Code Playgroud)