Встраивание XML в приложение iOS - PullRequest
1 голос
/ 13 марта 2012

Я делаю свою первую игру для iOS, и мне нужно загрузить несколько уровней, которые хранятся в формате XML.Файлы уровней хранятся локально и все отлично работает из эмулятора.Однако, поскольку XML загружается во время выполнения, когда я пытаюсь протестировать свою игру на реальном устройстве, он не может найти файлы XML, поскольку они на самом деле не являются частью приложения.

Я пришел из FlashТаким образом, у меня может быть неправильное представление о том, как это делается на iOS, но мне нужно каким-то образом связать эти XML-файлы с приложением или как-то встроить его в код?Это возможно?

Большое спасибо:)

Ответы [ 3 ]

6 голосов
/ 13 марта 2012

Хорошо Код для поиска комплекта приложений для указанного файла:

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

Надеюсь, это поможет вам ...

1 голос
/ 13 марта 2012

Вы можете добавить 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/)

0 голосов
/ 12 октября 2016

Вот мое решение в 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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...