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“)' –
查看原文我的更新... –