Плист не читается ... Что я делаю не так? - PullRequest
0 голосов
/ 04 декабря 2011

В моей папке «Ресурсы» есть список свойств, называемый «levelconfig.plist», и я хочу прочитать что-нибудь из него.

Я сделал следующее:

-(NSString *) dataFilePath
{
    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [path objectAtIndex:0];

    return [documentDirectory stringByAppendingPathComponent:@"levelconfig.plist"];


}

-(void) readPlist{
    NSString *filePath = [self dataFilePath];
    if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
        NSArray *array = [[NSArray alloc]initWithContentsOfFile:filePath];
        NSLog(@"%@",array);
        NSLog(@"%@", filePath);

    }


}

И в методе ccTouchesBegan я вызываю:

[self readPlist];

Мой plist содержит массив, который должен отображаться правильно?Хорошо ли хранить данные уровня в файле .plist?

plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Root</key>
    <array>
        <string>sunday</string>
        <string>monday</string>
        <integer>44</integer>
    </array>
</dict>
</plist>

Ответы [ 3 ]

1 голос
/ 04 декабря 2011

Вы должны сначала прочитать словарь, как указано в вашем списке.Например:

NSString *mainPath = [[NSBundle mainBundle] bundlePath];
NSString *itemPositionPlistLocation = [mainPath stringByAppendingPathComponent:@"test.plist"];
NSDictionary * itemPositions = [[NSDictionary alloc] initWithContentsOfFile:itemPositionPlistLocation];
NSArray * items = [itemPositions objectForKey:@"Root"];
NSLog(@"%@", items);

Я не уверен, что вы делаете с другим кодом, но для загрузки файла достаточно двух строк.Пожалуйста, извините имена переменных;Я быстро адаптировал это из моего текущего проекта.Кроме того, убедитесь, что вы освободили массив и словарь в dealloc или, где это уместно.

0 голосов
/ 04 декабря 2011

Ваш файл pList представляет собой словарь с массивом в корневом ключе, и вы читаете его в массив.

-(void) readPlist{
        NSString *filePath = [self dataFilePath];
    if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
        NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:filePath];
        NSArray *array = [[NSArray alloc]initWithArray:[dict objectForKey:@"Root"]];
        NSLog(@"%@",array);
        NSLog(@"%@", filePath);
        [dict release];
        [array release];

    }
}
0 голосов
/ 04 декабря 2011

Вы уверены, что он находится в вашей папке ресурсов? В этом случае вы не строите путь правильно. Возможно, вы захотите использовать [NSBundle pathForResource:] ( документы )

...