【问题标题】:Cannot find an overload for XCTAssertEqual that accepts an argument list of type ([String : AnyObject], [String : AnyObject])找不到接受类型参数列表的 XCTAssertEqual 的重载 ([String : AnyObject], [String : AnyObject])
【发布时间】:2015-07-28 08:01:23
【问题描述】:

我有一种方法:

func tableAsDictionary() -> [String: AnyObject]

那我需要测试一下:

let tableDictionary = table.tableAsDictionary()

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

XCTAssertEqual(tableDictionary, expectedDictionary) //error

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

【问题讨论】:

    标签: swift xctest


    【解决方案1】:

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

    func ==<Key : Equatable, Value : Equatable>(lhs: [Key : Value], rhs: [Key : Value]) -> Bool
    

    但是AnyObject 不符合Equatable

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      相关资源
      最近更新 更多