2016-03-23 3 views
1

サンプルコード:NSRangeに「==」を追加しても、XCTAssertEqualが引数としてNSRangeを使用しないのはなぜですか?

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)) 
    } 
} 

警告は言った: '(NSRange、NSRange)' タイプの引数リストで 'XCTAssertEqual' を起動することはできません。

NSRangeは実際にタプルなのですか?私が正しく思い出すと、タプルを置くときも同じことが起こりました。事前に

おかげで、

答えて

2

あなたはEquatableとしてNSRangeを宣言するのを忘れたので、それは単にです:私は落ち着いて読んでいないので、

extension NSRange : Equatable {} 
+0

ありがとうございました。 – LiweiZ

1

はいくつかのより多くの情報を追加します最初の場所でガイド。以下の何Apple's programming guide saysです:

タイプはすでに、プロトコルの要件のすべてに適合 が、まだそれはそのプロトコルを採用していることを述べていない、あなたはそれが空の拡張子を持つプロトコルを採用 作ることができれば

タイプは、その 要件を満たすだけで自動的にプロトコルを採用しません。彼らは常にプロトコルを の採用を明示的に宣言しなければなりません。

関連する問題