Fatal error: Can't compare indices belonging to different collections:
Fatal error: Can't compare indices belonging to different collections:
我在遍历 SwiftyJSON 对象的内容时遇到一个奇怪的错误。
我初始化对象并传递给一个函数,该函数将 JSON 转换为适合 POST 请求的字典
var routineForUpload:JSON = [:]
routineForUpload["Make"] = JSON("")
routineForUpload["Model"] = JSON("")
routineForUpload["EndYear"] = JSON("")
routineForUpload["StartYear"] = JSON("")
doPostOperation(routineForUpload)
func doPostOperation(_ inputJSON:JSON){
....
var post = [String: String]()
for (key,subJson):(String, JSON) in inputJSON { //<-- ** Error appears here **
post[key] = subJson.stringValue
}
....
}
当我用三个属性初始化对象时,一切正常,当我增加到四个时,我的应用程序崩溃了:
致命错误:无法比较属于不同集合的索引:
当我跟踪错误时它指向 SwiftyJSON.swift
中的这个函数
public func ==(lhs: JSONIndex, rhs: JSONIndex) -> Bool
{
switch (lhs, rhs)
{
case (.array(let left), .array(let right)):
return left == right
case (.dictionary(let left), .dictionary(let right)):
return left == right //<- ** Error appears here **
case (.null, .null): return true
default:
return false
}
}
我猜这与检查迭代是否完成有关,但我有点卡住了
我似乎已经通过使用
解决了这个问题
for (key,subJson):(String, JSON) in inputJSON.dictionaryValue {
而不是
for (key,subJson):(String, JSON) in inputJSON {
我在遍历 SwiftyJSON 对象的内容时遇到一个奇怪的错误。
我初始化对象并传递给一个函数,该函数将 JSON 转换为适合 POST 请求的字典
var routineForUpload:JSON = [:]
routineForUpload["Make"] = JSON("")
routineForUpload["Model"] = JSON("")
routineForUpload["EndYear"] = JSON("")
routineForUpload["StartYear"] = JSON("")
doPostOperation(routineForUpload)
func doPostOperation(_ inputJSON:JSON){
....
var post = [String: String]()
for (key,subJson):(String, JSON) in inputJSON { //<-- ** Error appears here **
post[key] = subJson.stringValue
}
....
}
当我用三个属性初始化对象时,一切正常,当我增加到四个时,我的应用程序崩溃了:
致命错误:无法比较属于不同集合的索引:
当我跟踪错误时它指向 SwiftyJSON.swift
中的这个函数public func ==(lhs: JSONIndex, rhs: JSONIndex) -> Bool
{
switch (lhs, rhs)
{
case (.array(let left), .array(let right)):
return left == right
case (.dictionary(let left), .dictionary(let right)):
return left == right //<- ** Error appears here **
case (.null, .null): return true
default:
return false
}
}
我猜这与检查迭代是否完成有关,但我有点卡住了
我似乎已经通过使用
解决了这个问题for (key,subJson):(String, JSON) in inputJSON.dictionaryValue {
而不是
for (key,subJson):(String, JSON) in inputJSON {