致命错误:无法比较属于不同集合的索引:

Posted

技术标签:

【中文标题】致命错误:无法比较属于不同集合的索引:【英文标题】:Fatal error: Can't compare indices belonging to different collections: 【发布时间】:2020-10-23 14:29:39 【问题描述】:

我在迭代 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
    

我猜这与检查迭代是否完成有关,但我有点卡住了

【问题讨论】:

【参考方案1】:

我似乎已经通过使用解决了这个问题

for (key,subJson):(String, JSON) in inputJSON.dictionaryValue 

而不是

for (key,subJson):(String, JSON) in inputJSON 

【讨论】:

以上是关于致命错误:无法比较属于不同集合的索引:的主要内容,如果未能解决你的问题,请参考以下文章

如何在MongoDB中建立新数据库和集合

集合与数组比较

Java集合和数组的比较(为什么引入集合)

集合和数组的比较--为什么引入集合

错误:无法创建符号链接,致命:无法将索引文件重置为修订版“HEAD”

为啥我的 UICollectionView 无法访问我在 for 循环中创建的数组 - 致命错误:索引超出范围