【问题标题】:Swift Playground: NSXMLParser / parse() always returns falseSwift Playground:NSXMLParser / parse() 总是返回 false
【发布时间】:2016-01-15 12:31:20
【问题描述】:

这是我的代码:

public class Payment: NSObject, NSXMLParserDelegate {

public var buchungsdatum:NSDate
public var valutadatum:NSDate
public var betrag:Double
public var verwendungszweck:String

public var creditorIban:String
public var creditorBic:String
public var creditorName:String

public var debitorIban:String
public var debitorBic:String
public var debitorName:String

override init() {
    buchungsdatum = NSDate()
    valutadatum = NSDate()
    betrag = 0.0
    verwendungszweck = ""

    creditorIban = ""
    creditorBic = ""
    creditorName = ""

    debitorBic = ""
    debitorIban = ""
    debitorName = ""
}

override public var description: String {
    return "Payment-Information:"
}

func beginParse() {
    let url = NSURL(fileURLWithPath: "/Users/Andi/Downloads/c53/CAMT/2015-10-06_C53_DE92300606010303502481_EUR_585142.xml")

    let xml = NSXMLParser(contentsOfURL: url)!

    xml.delegate = self
    xml.parse()

}

@objc public func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
    print("get an element")
}

@objc public func parserDidStartDocument(parser: NSXMLParser) {
    print("started")
}


@objc public func parserDidEndDocument(parser: NSXMLParser) {
    print("ended")
}

public func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {
    print("Fehler")
}
} 
var aPayment:Payment = Payment()
aPayment.beginParse()

谁能告诉我为什么 parse() 返回 false 并且没有调用任何委托方法。即使是 parseError 也没有。我完全不明白为什么。

Xcode 甚至显示 XML 文件有内容并且 url 不是 nil(见图) Xcode shows the XMLContent in the playground

【问题讨论】:

  • 首先要问自己:url 是 nil 吗?
  • “这让我很生气”哇,好吧,我刚刚停止提供帮助。
  • 不,url 不为零(见图)
  • 好的,很好。第二个问题,它是有效的 XML 吗?请在某处发布实际文件,以便我们检查。
  • 是的,它非常有效。这是银行的对账单文件。抱歉,不能发布(数据安全),但相信我,它是有效的。当我将它硬编码为字符串变量时它可以工作,但这是不想做的。

标签: xcode swift parsing nsxmlparser swift-playground


【解决方案1】:

这很可能是因为您的 NSURL 为 nil。

【讨论】:

  • 不要发布 cmets 作为答案。
  • url不是nil,看图吧。
猜你喜欢
  • 1970-01-01
  • 2021-10-24
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2021-11-05
相关资源
最近更新 更多