2016-03-23 16 views
1

Örnek kod:NSCange için "==" ekledikten sonra XCTAssertEqual neden NSRange'ı argüman olarak almıyor?

import XCTest 

func == (lhs: NSRange, rhs: NSRange) -> Bool { 
    return lhs.location == rhs.location && lhs.length == rhs.length 
} 

class NSRangeInXCTAssertionEqualTests: XCTestCase { 
    func testNSRange() { 
     XCTAssertEqual(NSMakeRange(1, 3), NSMakeRange(2, 5)) 
    } 
} 

uyarı söyledi: türünde bir argüman listesi '(NSRange, NSRange)' ile 'XCTAssertEqual' çağırmak olamaz.

NSRange aslında bir Tuple olduğu için mi? Doğru bir şekilde hatırlarsam, ben de Tuples'i yerleştirmek istediğimde aynı şeyi gördüm. peşin

sayesinde

Liwei

cevap

2

Eğer Equatable olarak NSRange ilan unuttum çünkü sadece var: Sakin ve okumadım çünkü

extension NSRange : Equatable {} 
+0

Yardımlarınız için teşekkürler. – LiweiZ

1

Sadece biraz daha bilgi eklemek için ilk etapta rehber.

bir türü zaten protokol, tüm gereksinimlerine uyan ancak henüz bu protokolü benimser belirtti değilse, bunu boş bir uzantısı

ile protokolü benimsemesi yapabilirsiniz: Takip Apple's programming guide says nedir

Türler, yalnızca gereksinimlerini karşılayarak otomatik olarak bir protokol benimser. Protokolü her zaman kabul ettiklerini beyan etmelidirler.

İlgili konular