【发布时间】:2014-12-11 00:56:01
【问题描述】:
我正在开发一个游戏,其中有在 XML 文件中描述的障碍模式,所以我在我的 swift 文件中实现了这个类:
class PatternsParser: NSObject, NSXMLParserDelegate
{
var myParser: NSXMLParser!
var arrayOfPatterns = [Element]()
var currentId = 0
init(url: NSURL)
{
myParser = NSXMLParser(contentsOfURL: url)
println(myParser.parserError?)
super.init()
myParser.delegate = self
if myParser.parse()
{
println("Was able to parse")
}
}
func parser(parser: NSXMLParser!, parseErrorOccurred parseError: NSError!) {
println("error = \(parseError)")
}
在我的另一个 swift 文件中,我写了这个:
// this is just a function to return the document path I use to create the NSURL
func getXMLPath(pathName path:String) -> String?
{
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0] as String
let filePath: String? = documentsDirectory?.stringByAppendingPathComponent(path)
return filePath
}
let buffer: NSURL! = NSURL(fileURLWithPath: getXMLPath(pathName:"patterns.xml"))
var patternParser = PatternsParser(url:buffer)
但是,我得到的是 myParser.parse() 总是返回 no,即使这样 parserError 属性也没有告诉我任何东西(是 nil)。我也尝试过实现parseErrorOcurred和validationErrorOcurred的方法,但是什么都没有……
如果你想看看 patterns.xml 文件,这里是:
<?xml version="1.0"?>
<game>
<pattern id="0" difficulty="0" width="800">
<coinArea>
<rect x="100" y="470,5" width="12" height="5"/>
</coinArea>
</pattern>
<pattern id="1" difficulty="1" width="600">
<coinArea>
<rect x="100" edge="up" width="8"/>
</coinArea>
<wall orientation="vertical" texture="wallText">
<rect x="300" edge="down"/>
</wall>
</pattern>
<pattern id="2" difficulty="1" width="750">
<wall orientation="vertical" texture="wallText">
<rect edge="down" x="25"/>
</wall>
<wall orientation="vertical" texture="wallText">
<rect edge="up" x="60"/>
</wall>
<electricLine orientation="horizontal">
<rect edge="up" x="0"/>
</electricLine>
</pattern>
</game>
【问题讨论】:
-
你有没有检查过URL的内容以及文件是否真的存在?
-
URL 似乎是正确的,而且文件肯定在那里,与我的其他文件在同一个文件夹中
-
在我看来这不是有效的 XML...stackoverflow.com/questions/5042902/…
标签: ios xml swift ios8 nsxmlparser