如果这个类是通用的,如何检查一个对象是否是给定类的实例?
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/