簡體   English   中英

將值對附加到字典鍵

[英]Appending value-pair to a dictionary-key

我正在閱讀包含許多部分的文本文件。 我將有一個像這樣的字典:

stringArrayCompleteData['Objekt']['Mobile']    
stringArrayCompleteData['Objekt']['address']
stringArrayCompleteData['Header']['devicenumber']
stringArrayCompleteData['Header']['departmentemailaddresse']
and much more

但是在我看來,總是不會附加新值,而這些值將被覆蓋。 然后我只有最后的價值。

var stringArray = fullImportContent!.componentsSeparatedByString("\n")
var stringArrayCompleteData = Dictionary<String, Dictionary<String, Any>>()
var arrIndexSection : String = "NoHeader"

        for singleRow in stringArray
        {
            if(singleRow != "")
            {
                switch singleRow {
                    case "#Header":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    case "#Objekt":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    case "#Baustelle":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    case "#Auftraggeber":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    case "#Architekt":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    case "#Vermittler":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    case "#Regulierer":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    case "#Versicherung":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    case "#Kontaktstellen":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    case "#Dateien":
                        arrIndexSection = singleRow.stringByReplacingOccurrencesOfString("#", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    default:
                        //Here the multiple array would be filled
                        var arrSingleRow = singleRow.componentsSeparatedByString(";")

                        if( arrSingleRow.count > 0  )
                        {
                            if( arrIndexSection == "Kontaktstellen" )
                            {
                                //TODO: Kontaktstellen einlesen

                                //#Kontaktstellen
                                //Baustelle;0;348873;;;;0
                                //Baustelle;0;381263;;Albrecht;0815;0
                                //Regulierer/SV;0;171979;Josef;Eder;08546/911055;0
                                println( "Kontaktstellendaten" )
                                println( singleRow )
                            }
                            else if( arrIndexSection == "Dateien" )
                            {
                                //TODO: Dateien einlesen

                                //#Dateien
                                //11022015090007_BEmail_INNNUE_21102014141534.pdf; 99; Email an eva.nuhn@mbs-service.de

                                println( "Dateiendaten" )
                                println( singleRow )
                            }
                            else
                            {
                                stringArrayCompleteData[arrIndexSection] = [arrSingleRow[0]: arrSingleRow[1]]

//在這里,我嘗試更新值並附加一個值
//stringArrayCompleteData[arrIndexSection]?.updateValue(arrSingleRow[1],forKey:arrSingleRow [0])//錯誤:無法對常量字典進行變異

                            }
                        }
                }
            }
        }
        println( stringArrayCompleteData )
        for key in stringArrayCompleteData.keys {
            println("Key: \(key)")
        }

這是println()的結果

[Auftraggeber:[Telefon2:],Regulierer:[Telefon2:],Baustelle:[Telefon2:],版本:[Telefon2:01805],標題:[iPadNr:3E24-45B8-A2AC-7E3501BED78A],對象:[Site TesterHinwei ]]

關鍵:Auftraggeber

關鍵:調節器

關鍵:鮑斯特爾

關鍵:Versicherung

關鍵:標題

關鍵:對象

我無法確切地了解您在做什么,但是...為什么您使用的字典是值是另一個字典的字典? 改用Array的字典會更好嗎?

就像是

 Dictionary<String, Array<Any>>()

或更好

   [String:[Any]]()

這樣,Dictionary的鍵就是“節名”,而Array的值(可以使用.append方法添加)就是這些值。

希望得到幫助,如果不嘗試澄清您希望從代碼中得到什么輸入和輸出,我知道您不是母語人士,但是很難理解這里的真正需求。

再見! D.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM