找不到接受类型参数列表的XCTAssertEqual的重载([String:AnyObject],[String:AnyObject])

Bar*_*zyk 5 xctest swift

我有一个方法:

func tableAsDictionary() -> [String: AnyObject]
Run Code Online (Sandbox Code Playgroud)

然后我需要测试一下:

let tableDictionary = table.tableAsDictionary()

let expectedDictionary: [String: AnyObject] = [
    "id": "1234",
    "name": "Next to window",
    "number": 23
]

XCTAssertEqual(tableDictionary, expectedDictionary) //error
Run Code Online (Sandbox Code Playgroud)

找不到XCTAssertEqual接受类型参数列表的重载[String : AnyObject], [String : AnyObject]

Mar*_*n R 7

问题是==字典的运算符要求键和值类型都是Equatable:

func ==<Key : Equatable, Value : Equatable>(lhs: [Key : Value], rhs: [Key : Value]) -> Bool
Run Code Online (Sandbox Code Playgroud)

AnyObject不符合Equatable.

一个简单的解决方法是更换字典类型[String: AnyObject][String : NSObject],那么你的代码编译没有问题.