gpt4 book ai didi

swift - 无法使用某些参数创建实体

转载 作者:行者123 更新时间:2023-11-28 14:42:54 25 4
gpt4 key购买 nike

我尝试使用参数以通用方式初始化一个类,但它不起作用...

protocol EntityCreator: class {
func createEntity<EntityType: EntityClass & EntityCreatorInitializable>(type: EntityType.Type, _ initialize: @escaping (EntityType) -> Void)
}

protocol EntityCreatorInitializable {
init(entityCreator: EntityCreator)
}

class EntityClass: NSObject { }

class MyClass: EntityClass, EntityCreatorInitializable {
required init(entityCreator: EntityCreator) {
super.init()
// use the entityCreator
}
}

// On the entity creator implementation :

class EntityCreatorImplementation: EntityCreator {
var toAdd = Set<EntityClass>()

func createEntity<EntityType: EntityClass & EntityCreatorInitializable>(type: EntityType.Type, _ initialize: @escaping (EntityType) -> Void) {
// This creation doesn't work...
let newEntity = EntityType(entityCreator: self)
initialize(newEntity)
self.toAdd.insert(newEntity)
}
}

我在编译时遇到的错误是

Non-nominal type 'EntityType' does not support explicit initialization

关于如何实现这一点有什么想法吗?

谢谢!!

编辑:我添加了 EntityClass 的定义。在我的项目中,它是一个 GKEntity,但问题与 NSObject 相同

编辑:添加了 toAdd Set,忘记声明它(但在 createEntity 方法中使用了它)

最佳答案

改变

EntityType: EntityClass & EntityCreatorInitializable

EntityType: EntityCreatorInitializable

关于swift - 无法使用某些参数创建实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50438175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com