为什么会这样
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")
没有?
答案 0 :(得分:1)
创建Equatable
Optional<T>
并非完全可能,因为T
本身可能不是Equatable
,并且不能在实例声明中受到限制。因此,Optionals的==
运算符会像这样重载
func ==<T : Equatable>(lhs: T?, rhs: T?) -> Bool
但是没有相应的Equatable
实例。最终结果是Optionals可以与==
进行比较,但可能不会提供给Equatable
类通用XCTAssertEqual
类型的方法。具有实际约束的类型系统的另一个重要论点......