Не удается найти перегрузку для XCTAssertEqual, которая принимает список аргументов типа ([String: AnyObject], [String: AnyObject])

У меня есть один способ:

func tableAsDictionary() -> [String: AnyObject]

Затем мне нужно проверить это:

let tableDictionary = table.tableAsDictionary()

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

XCTAssertEqual(tableDictionary, expectedDictionary) //error

Не удалось найти перегрузку для XCTAssertEqual, которая принимает список аргументов типа [String : AnyObject], [String : AnyObject]


person Bartłomiej Semańczyk    schedule 28.07.2015    source источник


Ответы (1)


Проблема в том, что оператор == для словарей требует, чтобы и ключ, и тип значения были Equatable:

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

но AnyObject не соответствует Equatable.

Простое исправление - заменить тип словаря [String: AnyObject] на [String : NSObject], тогда ваш код компилируется без проблем.

person Martin R    schedule 28.07.2015