有没有办法检查两个[String:Any]是否相同?
let actual: [[String: Any]] = [
["id": 12345, "name": "Rahul Katariya"],
["id": 12346, "name": "Aar Kay"]
]
var expected: [[String: Any]]!
if actual == expected {
print("Equal")
}
Run Code Online (Sandbox Code Playgroud)
基本上我希望Dictionary符合Swift 3中的Equatable协议.
Dra*_*ian 15
对于Xcode 7.3,swift 2.2
字典是类型:[String:AnyObject]或简单地放NSDictionary
let actual: [String: AnyObject] = ["id": 12345, "name": "Rahul Katariya"]
var expected: [String: AnyObject] = ["id": 12346, "name": "Aar Kay"]
print(NSDictionary(dictionary: actual).isEqualToDictionary(expected))//False
Run Code Online (Sandbox Code Playgroud)
对于Xcode 8.beta 6,Swift 3
字典定义为:
struct Dictionary<Key : Hashable, Value> : Collection, ExpressibleByDictionaryLiteral
Run Code Online (Sandbox Code Playgroud)
NSDictionary具有以下便利初始化程序:
convenience init(dictionary otherDictionary: [AnyHashable : Any])
Run Code Online (Sandbox Code Playgroud)
因此,您可以将AnyHashable类型用于Key,将Any类型用于Value
let actual: [String: Any] = ["id": 12345, "name": "Rahul Katariya"]
var expected: [String: Any] = ["id": 12346, "name": "Aar Kay"]
print(NSDictionary(dictionary: actual).isEqual(to: expected))//False
Run Code Online (Sandbox Code Playgroud)
使用 Swift 5.5,您可以轻松地将其转换为NSDictionary,因为它总是成功的:
XCTAssertEqual(actual as NSDictionary, expected as NSDictionary)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12113 次 |
| 最近记录: |