gpt4 book ai didi

swift - 在 Swift 中存储然后转换为元类型

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:26 25 4
gpt4 key购买 nike

<分区>

实际上,我想要一个将返回元类型(例如:Type.Type)的协议(protocol),我可以将其传递给类,然后在需要时将对象转换为该元类型。我要转换它的原因是它将在 tableView 出列函数中使用,我想转换为我分配的类型。

考虑这个精简版(下面是完整版)。

let anyObject: AnyObject = anything()

let aType = type.type() // aType here is A.Type

if let newType = anyObject as? aType {

print(newType)
}

// error: 'aType' is not a type

我很困惑为什么这不是一个类型,因为我们可以去 aType.init() 来初始化它?

完整的示例代码如下(可以在 Playground 中运行)。

import UIKit

protocol P {

func type() -> A.Type
}

class A {

}

class B: A {

}

class C: A {

}

struct BData: P {

func type() -> A.Type {

return B.self
}
}

struct Foo {

let type: P

init(p: P) {

self.type = p
}

func create() {

let anyObject: AnyObject = anything()

let typeType = type.type()

if let newType = anyObject as? typeType {

print(newType)
}
}

func anything() -> AnyObject {

return B()
}
}

let data = BData()

let foo = Foo(p: data)

Playground 执行失败:MyPlayground.playground:43:44: 错误:'typeType' 不是类型 如果让 newType = anyObject 为?类型类型 {

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