Se si desidera solo per confrontare i tipi di classe, allora si può semplicemente utilizzare NSStringFromClass per confrontare i nomi di classe, come di seguito:
class Test {}
var a = Test.self
var b : AnyClass = a
if(NSStringFromClass(b) == NSStringFromClass(Test.self)) {
println("yes")
} else {
println("no")
}
Se si vuole scoprire o confrontare il tipo di un oggetto, è può usare "se ... è ... {}" sintassi codice qui sotto:
class Test { }
class Testb { }
var a = Test.self
let b : AnyObject = Testb()
if(b is Test) {
println("yes")
} else {
println("no")
}
Se si vuole fare un oggetto all'altro controllo di uguaglianza con operatore ==, è possibile rendere la vostra classe di prova conforme alle equatable protocollo. Questo può essere esteso a entrambi i tipi Struct e Class in Swift come spiegato in questo articolo di NSHipster: http://nshipster.com/swift-comparison-protocols/.
Il codice può quindi essere scritto come segue, si prega di notare: questo è il controllo di uguaglianza di oggetti, quindi non è possibile definire b come AnyClass, è necessario invece definire come AnyObject.
class Test: Equatable { }
// MARK: Equatable
func ==(lhs: Test, rhs: Test) -> Bool {
return ObjectIdentifier(lhs) == ObjectIdentifier(rhs)
}
var a = Test()
var b : AnyObject = a
if((b as Test) == a) {
println("yes")
} else {
println("no")
}
fino a circa un nuovo operatore: D Grazie. – puttputt
Perché non può essere confrontato tra "Any?" E "Any?"? Ho avuto un errore: "L'operatore binario === non può essere applicato a due Qualsiasi? operands' – Kuba
@Kuba: l'operatore '===' è definito solo per le istanze di una * classe. * –