gpt4 book ai didi

swift - 如果这个类是通用的,如何检查一个对象是否是给定类的实例?

转载 作者:行者123 更新时间:2023-11-28 07:40:27 25 4
gpt4 key购买 nike

如果这个类是通用的,如何检查一个对象是否是给定类的实例?

class DataSource<ItemType> {
}

[...]
func Test() {
[...]
let result = dataSource?.isKind(of: DataSource)
print(result)
}

我收到此错误消息:无法推断通用参数“ItemType”

objective-c 中的相同代码(功能齐全):

@interface DataSource <ItemType : id> : NSObject
@implementation DataSource

if ([dataSource isKindOfClass:[DataSource class]]) {
}

谢谢

最佳答案

长话短说,你不能。Swift 不会让您调用具有不完整类型的函数,因为它无法为其生成代码(在机器级别)。

根据您的需要,您可以创建一个协议(protocol),为您的不同情况提供判别式,并使您的 DataSource 符合它:

enum Discriminant {
case dataSource, notDataSource
}

protocol Discriminable {
static var discriminant: Discriminant { get }
}

extension DataSource: Discriminable {
static var discriminant: Discriminant { return .dataSource }
}

// ...

let result = type(of: dataSource).discriminant == .dataSource
print(result) // Prints "true"

关于swift - 如果这个类是通用的,如何检查一个对象是否是给定类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52413244/

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