繁体   English   中英

将XML嵌入到iOS应用程序

[英]Embedding XML to iOS application

我正在用iOS开发我的第一款游戏,我需要加载一些存储为XML的关卡。 关卡文件存储在本地,并且在模拟器中一切正常。 但是,由于XML是在运行时加载的,因此当我尝试在实际设备上测试游戏时,找不到XML文件,因为它们实际上不是应用程序的一部分。

我来自Flash背景,因此我可能对iOS上的操作方法有一个错误的认识,但我需要以某种方式将这些XML文件与应用程序捆绑在一起,或以某种方式将其嵌入代码中? 这可能吗?

非常感谢 :)

好了,用于查找您的应用程序捆绑包中指定文件的代码是

NSString *path = [[NSBundle mainBundle] pathForResource:@"fileName.xml" ofType:nil]
NSURL *xmlURL = [NSURL fileURLWithPath:path];
[[NSXMLParser alloc] initWithContentsOfURL: xmlURL]

希望这对您有帮助...

您可以将XML文件添加到您的项目中,然后在运行时使用类似的内容进行读取

NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString  *myPath = [myPathList  objectAtIndex:0];
NSError  **err;
myPath = [myPath stringByAppendingPathComponent:fileName];

if([[NSFileManager defaultManager] fileExistsAtPath:myPath])
    text = [NSString stringWithContentsOfFile:myPath encoding:NSUTF8StringEncoding error:err];

您可以考虑使用JSON而不是XML。 至少据我所知,可用的XML解析器不像SBJson那样简单地使用(https://github.com/stig/json-framework/)

这是我在Swift 3.0中的解决方案。 除了代码之外,您还需要将XML文件作为数据集添加到Assets.xcassets中。 为此,请创建一个新的数据集,为其命名,然后将xml文件从查找器中拖动到新创建的数据集。 当您在代码中引用文件时,将使用文件的文件名,而不是数据集的名称。

var parseResults = false

if let path = Bundle.main.path(forResource: fileName, ofType: ".xml") {
    let url = URL(fileURLWithPath: path)
    if let xmlParser = XMLParser(contentsOf: urlToFile) {
        xmlParser.delegate = self
        parseResults = xmlParser.parse()
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM