首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将对象转换为存储在变量中的类

将对象转换为存储在变量中的类
EN

Stack Overflow用户
提问于 2017-06-12 15:06:08
回答 1查看 625关注 0票数 7

是否可以将类类型存储在变量中,然后使用该变量将对象强制转换为该类类型?

我似乎能够将类类型存储在枚举中的变量中,但无法将这个变量转换为该类型的新对象。

我有一个子类类型的枚举

代码语言:javascript
复制
enum FruitType: Int {

    case orange, apple, lemon, lime

    var className: Fruit.Type {
        switch self {
            case.orange:
                return Orange.self
            case.apple:
                return Apple.self
            case.lemon:
                return Lemon.self
            case.lime:
                return Lime.self
        }
    }
}

我有这些游戏对象的子类(橙、苹果、柠檬和柠檬),它们都是从“水果”继承的。

稍后,我尝试使用该变量将对象强制转换为该类型,但它报告了一个错误。

错误“未声明类型'fruitType‘的使用

代码语言:javascript
复制
func createFruit(fruitType: FruitType, name: String) {
    if let orange = self.childNode(withName: name) as? fruitType.className {
        self.orange = orange
    }
    etc...
}

我也尝试过fruitType.className(self.childNode(withName: name)),结果也一样

我研究过泛型,但找不到适合这种情况的东西。

编辑以显示实际示例

对上述问题作了简化,使问题更易于表述。我如何处理这个问题的真正本质是,我正在将SKS场景文件作为基于SKReferenceNode的fruitType加载,我需要相应地转换该SKReferenceNode。

代码语言:javascript
复制
func loadFruit(fruitType: FruitType) {

    var fruit: Fruit!
    if let fruitFile = SKReferenceNode(filename: fruitType.fileName) {

        if let fruitNode = fruitFile.childNode(withName: fruitType.name) as? fruitType.className {
             fruitNode.setup()
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-06-12 15:14:52

也许这会帮到你:

工厂方法:使用工厂模式替换类构造函数,抽象对象生成过程,以便在运行时确定实例化对象的类型。

https://github.com/ochococo/Design-Patterns-In-Swift#-factory-method

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44502746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档