Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays (键:X,值:X)不能转换为';(",;,元组有不同数量的元素_Arrays_Json_Swift_Dictionary_Tuples - Fatal编程技术网

Arrays (键:X,值:X)不能转换为';(",;,元组有不同数量的元素

Arrays (键:X,值:X)不能转换为';(",;,元组有不同数量的元素,arrays,json,swift,dictionary,tuples,Arrays,Json,Swift,Dictionary,Tuples,我对斯威夫特很陌生,我现在有点被卡住了。。。我一直在“for”(用***标记)部分出错。。。我不明白为什么 以下是全部代码: private func startPreload() { if UserDefaults.standard.bool(forKey: ISPRELOADED) { return } let loans = readPreload() // *** Error happens here: for (name,

我对斯威夫特很陌生,我现在有点被卡住了。。。我一直在“for”(用
***
标记)部分出错。。。我不明白为什么

以下是全部代码:

private func startPreload() {

    if UserDefaults.standard.bool(forKey: ISPRELOADED) {
        return
    }

    let loans = readPreload()

    // *** Error happens here:
    for (name, amount, note, created, due, done, image, contactInfo, contactTypeMail, chargeMode, chargeAmount) in loans {
        let _ = LoanResources.insertLoan(withName: name, andAmount: amount, andNote: note, andCreated: created, andDue: due, andDone: done, andImage: image, andContactInfo: contactInfo, andContactTypeMail: contactTypeMail, andChargeMode: chargeMode, andChargeAmount: chargeAmount)
    }

    UserDefaults.standard.set(true, forKey: ISPRELOADED)
}

private func readPreload() -> [String: String] {

    var preparedLoans = [String: String]()

    let preloadFileUrl = Bundle.main.url(forResource: "preload", withExtension: "strings")

    do {
        guard let fileLoan = preloadFileUrl else {
            return preparedLoans
        }

        let data = try Data(contentsOf: fileLoan)
        let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! NSDictionary

        let loanArray = json["Loans"] as! NSArray
        for loan in loanArray {
            let loanDict = loan as! NSDictionary

            let name = loanDict["name"] as! String
            let amount = loanDict["amount"] as! String
            let note = loanDict["note"] as! String
            let created = loanDict["created"] as! String
            let due = loanDict["due"] as! String
            let done = loanDict["done"] as! String
            let image = loanDict["image"] as! String
            let contactInfo = loanDict["contactInfo"] as! String
            let contactTypeMail = loanDict["contactTypeMail"] as! String
            let chargeMode = loanDict["chargeMode"] as! String
            let chargeAmount = loanDict["chargeAmount"] as! String

            preparedLoans[name] = name
            preparedLoans[amount] = amount
            preparedLoans[note] = note
            preparedLoans[created] = created
            preparedLoans[due] = due
            preparedLoans[done] = done
            preparedLoans[image] = image
            preparedLoans[contactInfo] = contactInfo
            preparedLoans[contactTypeMail] = contactTypeMail
            preparedLoans[chargeMode] = chargeMode
            preparedLoans[chargeAmount] = chargeAmount
        }

    } catch {
        print(error.localizedDescription)
    }

    return preparedLoans
}
也许我必须进一步从贷款中获取密钥和价值?

此错误消息:

(Key:X,value:X)不能转换为“(,,…”,元组的元素数不同

表示循环的
元素过多。在你的情况下,你只需要一个

for loan in loans {
        let _ = LoanResources.insertLoan(
                withName: loan.name, 
                andAmount: loan.amount, 
                andNote: loan.note, 
                andCreated: loan.created, 
                andDue: loan.due,  
                andDone: loan.done, 
                andImage: loan.image, 
                andContactInfo: loan.contactInfo, 
                andContactTypeMail: loan.contactTypeMail, 
                andChargeMode: loan.chargeMode, 
                andChargeAmount: loan.chargeAmount)
}