如果此类是通用类,如何检查对象是否为给定类的实例?
class DataSource<ItemType> {
}
[...]
func Test() {
[...]
let result = dataSource?.isKind(of: DataSource)
print(result)
}
我收到此错误消息:无法推断通用参数'ItemType'
目标C中的相同代码(功能齐全):
@interface DataSource <ItemType : id> : NSObject
@implementation DataSource
if ([dataSource isKindOfClass:[DataSource class]]) {
}
谢谢
答案 0 :(得分:0)
长话短说,你不能。 Swift不会让您调用不完整类型的函数,因为它无法为其生成代码(在计算机级别)。
根据您的需求,您可以创建一个协议来区分您的不同情况,并使您的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"