首页 > 解决方案 > 在 Swift 中获取线程 1 信号 SIGABRT 崩溃错误

问题描述

我的应用程序崩溃了,它没有显示原因并且无法找到原因,崩溃发生在 for 循环中,循环运行并且它在 if 条件下第二次命中然后才崩溃。

这是我的代码。

func removeDuplicatesFromOrderAndOpenOrder() {
    let storedArray = NSMutableArray()
    for i in 0..<logOrderMutArray.count {
        let orderFipsValue:NSNumber = (logOrderMutArray[i] as AnyObject).value(forKey: "FIPS") as? NSNumber ?? 0
        let orderAccountNumberValue:String = (logOrderMutArray[i] as AnyObject).value(forKey: "AccountNumber") as? String ?? ""
        if i == 0 {
            continue
        }
        for var j in 0..<openOrderMutArray.count {
            let FipsValue:NSNumber = (openOrderMutArray[j] as AnyObject).value(forKey: "FIPS") as? NSNumber ?? 0 //----- > Thread 1 signal SIGABRT  shows in this line.
            let AccountNumberValue:String = (openOrderMutArray[j] as AnyObject).value(forKey: "AccountNumber") as? String ?? ""
            if orderFipsValue == FipsValue && orderAccountNumberValue == AccountNumberValue {
                let dictMutableCopy = logOrderMutArray[i] as! NSDictionary
                let editDict = NSMutableDictionary(dictionary: dictMutableCopy)
                let newDict = openOrderMutArray[j] as! NSDictionary
                let newMutableArray = NSMutableArray()
                newMutableArray.add(newDict)
                editDict.setValue(newMutableArray, forKey: "Inspectionlist")
                logOrderMutArray.replaceObject(at: i, with: editDict)
                openOrderMutArray.removeObject(at: j)
                j -= 1
            }
            else {
                storedArray.add(openOrderMutArray[j])
                logOrderMutArray.add(openOrderMutArray[j])
            }
        }
    }
}

标签: iosswift

解决方案


推荐阅读