XCTAssertEquals在Swift中有两个dicts

Joh*_*han 10 xcode objective-c xctest swift

我正在进行exercism.io编程练习,我必须对我的代码执行的测试的目标是与dicts相互比较.练习的源代码可以在这里找到https://github.com/exercism/xswift/tree/master/word-count

用于比较两个dicts的测试代码

据我所知,bridgeToObjectiveC是苹果内部处理方法,因此它们已被删除.'[S : T]' does not have a member named 'bridgeToObjectiveC'如果他们删除它,我会得到它是非常容易理解的.

如果没有使用AssertEquals调用中的params的方法,我得到'[S : T]' does not conform to protocol 'Equatable'.Swift中有两个不可比的词吗?我怎么做才能使它们具有可比性?

Nat*_*ook 8

只要值是,您就可以检查字典的相等性Equatable.修改XCTAssertEqualDictionaries以包含通用约束:

func XCTAssertEqualDictionaries<S, T: Equatable>(first: [S:T], _ second: [S:T]) {
    XCTAssert(first == second)
}
Run Code Online (Sandbox Code Playgroud)


Rob*_*ert 7

尝试

XCTAssertEqual(swiftDict as NSObject, objCDict as NSObject)
Run Code Online (Sandbox Code Playgroud)

强制编译器放松并isEqual:在两者上调用方法。