0

新しいアプリに問題があります。すべてを簡単にするために、 XmlToDictionaryを使用して、WebService から大きな xml を取得して解析する必要があります。アプリをビルドしようとすると、タスク マネージャーを見ると、すべての RAM を消費するタスク ("SourceKit") です。インターネットで検索すると、問題を理解したと思います。解析の結果は、「明示的ではない」タイプのNSDictionaryの大きな配列です。

だから私の質問は: この NSDictionary の配列を管理する別の方法を知っていますか? または、この配列を明示的に宣言する方法はありますか? または別の方法ですか?これは私のコードです:

 //The block of the HTTP connection for get the xml form the WebService.
    operation.setCompletionBlockWithSuccess({ (operation, response) -> Void in

            parser = response as? XMLParser
            let XmlPars = XmlParsing()
            XmlPars.parsing(parser: parser!)



            }, failure: { (operation, error) -> Void in
                print(error.localizedDescription)
        })
        operation.start()

    func parsing (parser : XmlParser){
    let xmlStruttureTipi = (dictionary["StruttureTipi"] as! NSDictionary)
        let struttureTipi = (xmlStruttureTipi[xmlStruttureTipi.allKeys[0]] as! Array<NSDictionary>)
        parseStruttureTipi(struttureTipi: struttureTipi)
    }

    func parseStrutture {

func parseStrutture(strutture : [NSDictionary]) {

        let formatter = DateFormatter()
        var ArrayStrutture = [Struttura]()
        for struttura in strutture{
            let s = Struttura()

            formatter.dateFormat = "dd-MM-yyyy"
            let data = formatter.date(from: struttura["DataAggiornamento"] as! String)!

            if(struttura["DataAggiornamento"] != nil){s.DataAggiornamento = data}else{s.DataAggiornamento = formatter.date(from: "00-00-0000")}


            if(struttura["Longitudine"] != nil){s.Longitudine = Double((struttura["Longitudine"] as? String)!)}else{s.Longitudine = 0.0}

            if(struttura["Latitudine"] != nil){s.Latitudine = Double((struttura["Latitudine"] as? String)!)}else{s.Latitudine = 0.0}

            if(struttura["Nome"] != nil)
            {s.Nome = struttura["Nome"] as? String}
            else{s.Nome = ""}

//A lot other proprety...

            ArrayStrutture.append(s)
        }

        let repoStrutture = RepoStruture()
        repoStrutture.insertStrutture(strutture: ArrayStrutture)

    }

}
4

1 に答える 1