示例代码:
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实际上是一个元组吗?如果我没记错的话,当我想要放置元组时,我也遇到了同样的事情。
提前致谢,
力维
答案 0 :(得分:2)
这只是因为你忘了将NSRange声明为Equatable:
extension NSRange : Equatable {}
答案 1 :(得分:1)
只是为了补充更多信息,因为我没有冷静下来并在第一时间阅读指南。以下是Apple's programming guide says:
如果某种类型已符合协议的所有要求, 但尚未声明它采用该协议,你可以做到 采用具有空扩展名的协议
类型不会仅仅通过满足它来自动采用协议 要求。他们必须始终明确宣布他们的采用 协议。