XMLデータをダウンロードして解析するクラスがあります。 ボタンを押すと、クラスのインスタンスが作成され、そのクラスの関数が呼び出されます。同じクラス内でアクセスすると、内部のクラスは空です
クラス内の関数は、いくつかのxmlデータをダウンロードし、クラス内の変数に割り当てます。次に、関数は同じクラス内のデータの解析を開始する別の関数を呼び出します。しかし、この関数がxmlデータで変数を解析しようとすると、空になります。
私の質問は、同じクラス内の別の関数から変数にアクセスする際に変数が空である理由です。
ViewController:
@IBAction func searchFieldAction(sender: AnyObject) {
let bibSearch: bibSok = bibSok()
if let searchQ = searchfield.text {
bibSearch.bookSearch(String(searchQ))
}
}
ここでは何も間違っていない^
class bibSok: NSObject, NSXMLParserDelegate {
var xmlData:NSData = NSData()
func bookSearch(let stringQuery: String){
self.xmlData = NSData()
let url = "urlToGetXMLdata"
Alamofire.request(.GET, url!).validate().response { (request, response, data, error) in
print(request) //url is looking good and everything is fine
print(response) //Looking good. 200OK
print(error) //Nothing to see here
print(data!) //Gives xml data. Everything is good
self.xmlData = data! //assign data to the variable. Great so far
}
self.beginParsing()
}
func beginParsing(){
print("Begin parsing")
print(self.xmlData) //Empty as f*$%. <>
self.parser = NSXMLParser(data: self.xmlData) //Will not begin parse because it is empty
self.parser.delegate = self
self.parser.parse()
}
}
は明らかに多くのコードがありますが、私はあなたに問題があるコードをもたらしました。