1
我遇到了一個問題,我正在解析API的字符串值,並且試圖將它分配給UILabel。我已經測試的確切相同的位置更新標籤,因爲它是現在使用的格式標籤(lblNamedata)設置爲一個字符串:UILabel沒有在Swift 2中更新
self.lblNameData.text = "hello"
,它一直很好。
我目前有:
if success {
print("parse success!")
print(strXMLData)
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.lblNameData.text=self.strXMLData
})
} else {
print("parse failure!")
}
,這是行不通的。
下面是我的完整當前的代碼:
import UIKit
class ViewController: UIViewController,NSXMLParserDelegate {
var strXMLData:String = ""
var currentElement:String = ""
var passData:Bool=false
var passName:Bool=false
var parser = NSXMLParser()
@IBOutlet weak var lblNameData: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let url:String="http://www.stands4.com/services/v2/quotes.php?uid=idhere&tokenid=tokenhere&searchtype=xxxx&query=xxxx"
let urlToSend: NSURL = NSURL(string: url)!
// Parse the XML
parser = NSXMLParser(contentsOfURL: urlToSend)!
parser.delegate = self
let success:Bool = parser.parse()
if success {
print("parse success!")
print(strXMLData)
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.lblNameData.text=self.strXMLData
})
} else {
print("parse failure!")
}
}
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
currentElement=elementName;
if(elementName=="quote" || elementName=="author" || elementName=="result")
{
if(elementName=="quote"){
passName=true;
}
passData=true;
}
}
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
currentElement="";
if(elementName=="quote" || elementName=="author" || elementName=="result")
{
if(elementName=="quote"){
passName=false;
}
passData=false;
}
}
func parser(parser: NSXMLParser, foundCharacters string: String) {
if(passName){
strXMLData=strXMLData+"\n\n"+string
}
if(passData)
{
// print(string)
print("work")
}
}
func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {
NSLog("failure error: %@", parseError)
}
}
更新:所以,我認爲我找到了錯誤:在我分析器功能我設置strXMLData = strXMLData +「\ n \ n」 +字符串,但後我刪除\ n \ n我可以看到我的標籤更新...爲什麼會這樣?
它打印什麼'print(strXMLData)'?這是'dispatch_async'之前 – Santosh
該特定語句從我的API中打印出一個引用,例如'如果你想完成你的生活目標,你必須從聖靈開始。 Oprah Winfrey'但是,我意識到如果我打印出UILabel的價值,它會給我'可選的(「\ n \ n)如果你想完成你生活的目標,你必須從聖靈開始。 n \ nOprah Winfrey「)' –
查看原文我的更新... –