【问题标题】:Enum for .mlmodels?.mlmodels 的枚举?
【发布时间】:2025-12-03 04:25:01
【问题描述】:

因此,我目前正在开展一个项目,该项目包括使用 CreateML、CoreML 和 Vision 进行图像识别。我仍在尝试数据集并使用 CreateML 改进模型,但如果我从一个模型更改为另一个模型,我必须手动更改 Xcode 在将.mlmodel 文件导入项目时为我创建的变量let model = example()。所以我想用这些模型文件的名称做一个tableView,所以如果我点击其中一个,它会带我到“RecognitionVC”,将名称作为变量传递,这样我就可以用来自@的枚举实例化类987654330@ 然后访问我无法实现的“模型变量”。

这就是枚举的样子:

enum MLModels: String {
    case example
    case letters
    case ab
    case numbers
    case asl
}

这就是我想要实现的目标:

   func getModel() -> AnyClass {
        switch self {
        case .example:
            return example()
...
        }
    }

    var model: MLModel {
        switch self {
        case .example:
            return example()
...
        }
    }

我是这些机器学习内置框架的新手,如果有人能告诉我我做错了什么或如何实现这一点,我将不胜感激。谢谢,我包括一些截图。如果您想测试任何内容,包括指向苹果公共模型的链接:

link

【问题讨论】:

  • 您到底想达到什么目的?在我看来,您面临的设计模式问题不仅仅是 CoreML 问题,不是吗?

标签: swift xcode coreml vision createml


【解决方案1】:

当您编写example() 时,它会创建一个包装类的实例。这不是MLModel。但是,它确实具有 MLModel 作为属性,因此您可以编写 return example().model 来做您想做的事情。

【讨论】:

  • 是的,我也试过了,但它也没有工作,但你的回答让我找到了我的解决方案,所以我会把它标记为正确的。这是一个愚蠢的错误,我收到“Enum case 'example' cannot be used as an instance member”错误,因为类名是 example(),而我的 enum case 是相同的“example”。谢谢!