找不到接受类型参数列表的 XCTAssertEqual 的重载 ([String : AnyObject], [String : AnyObject])
Posted
技术标签:
【中文标题】找不到接受类型参数列表的 XCTAssertEqual 的重载 ([String : AnyObject], [String : AnyObject])【英文标题】:Cannot find an overload for XCTAssertEqual that accepts an argument list of type ([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
的重载
【问题讨论】:
【参考方案1】:问题是字典的==
运算符要求
键和值类型都是Equatable
:
func ==<Key : Equatable, Value : Equatable>(lhs: [Key : Value], rhs: [Key : Value]) -> Bool
但是AnyObject
不符合Equatable
。
一个简单的解决方法是替换字典类型[String: AnyObject]
通过[String : NSObject]
,那么你的代码编译没有问题。
【讨论】:
以上是关于找不到接受类型参数列表的 XCTAssertEqual 的重载 ([String : AnyObject], [String : AnyObject])的主要内容,如果未能解决你的问题,请参考以下文章
找不到接受提供的参数的“logInWithPermissions”的重载
“string”不包含“Text”的定义,并且找不到可接受类型为“string”的第一个参数的扩展方法“Te
"DataTable"未包含"AsEnumerable"的定义,并且找不到可接受第一个"DataTable"类型参数的可扩展方法"
定义,并且找不到可接受类型为“ASP._aspx”的第一个参数的扩展方法“”(是否缺少 using 指令或程序集引用?)