2015-09-04 119 views
0

我試圖解析一個XML,但是當我把字符串放在一個標籤或文本字段中時,它給了我錯誤。爲什麼?我不是在Viewcontroller.swift中,而是在另一個類中。我需要使用XML解析的結果來更改標籤/文本字段文本。EXC_BAD_INSTRUCTION(代碼= EXC_I386_INVOP,子代碼= 0x0)在Swift代碼中。爲什麼?

var task = session.dataTaskWithRequest(lobj_Request, completionHandler: {data, response, error -> Void in 
     println("Response: \(response)") 
     var strData = NSString(data: data, encoding: NSUTF8StringEncoding) 
     println("Body: \(strData)") 
     let parser = NSXMLParser(data: data) 
     parser.delegate = self 
     parser.parse() 


     if error != nil 
     { 
      println("Error: " + error.description) 
     } 
    }) 

    task.resume() 
} 


var currentElementName:NSString = "" 

func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [NSObject : AnyObject]) 
{ 
    currentElementName = elementName 
} 


func parser(parser: NSXMLParser, foundCharacters string: String?) 
{ 
    if currentElementName == "HelloAppleAndroidResult" 
    { 
     self.txtResult.text = string 
    } 
} 

的問題是:

self.txtResult.text = string 

有人能幫助我嗎?

回答

1

您需要安全地解開字符串,因爲您已在解析器方法簽名中將其聲明爲可選。

if let string = string { 
    self.txtResult.text = string 
} 

這也意味着,串在這一點零 - 和您的簽名說:它的好是零。 另外,字符串對於任何參數都不是一個好名字 - 我建議將其更改爲更多與概念相關的內容。

您也可以在這裏使用nil-coalescing運算符。它會要求你提供一個替代方案(這是該運營商的觀點)。替代方案不能是可選的。

self.textResult.text = string ?? alternativeString 
1

從你的問題我不是Viewcontroller.swift,但在另一個類,我強烈懷疑self.textResult可能是該類nil。把一個破發點這條線之上

self.txtResult.text = string 

,並檢查self.textResult值。您可以使用調試器來檢查使用po self.textResult

相關問題