字符串不相等的XCTAssert

时间:2014-11-29 21:32:06

标签: swift xctest

为什么会这样

var sb = NSStoryboard(name: "Main", bundle: nil)
var wc = sb?.instantiateControllerWithIdentifier("pref") as NSWindowController
XCTAssertEqual(wc.window?.title, "Preferences", "Preferences window must have title Preferences")

时出现Type 'String?' does not conform to protocol 'Equatable'错误
 var sb = NSStoryboard(name: "Main", bundle: nil)
 var wc = sb?.instantiateControllerWithIdentifier("pref") as NSWindowController
 XCTAssert(window.window?.title == "Preferences", "Preferences window must have title Preferences")

没有?

1 个答案:

答案 0 :(得分:1)

创建Equatable Optional<T>并非完全可能,因为T本身可能不是Equatable,并且不能在实例声明中受到限制。因此,Optionals的==运算符会像这样重载

func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool

但是没有相应的Equatable实例。最终结果是Optionals可以与==进行比较,但可能不会提供给Equatable类通用XCTAssertEqual类型的方法。具有实际约束的类型系统的另一个重要论点......