Чтение из плиста - PullRequest
       5

Чтение из плиста

0 голосов
/ 02 февраля 2012

У меня проблемы с чтением из файла plist У меня есть файл Settings.plist, сохраненный в моем проекте (пробовал как в папке ресурсов, так и вне ее) И ни один из предложенных методов google и stackOverFlow не сработал. Я понятия не имею, что мне не хватает. код:

    NSString *pListPath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"];
    NSMutableDictionary *settings = [[[NSMutableDictionary alloc] initWithContentsOfFile:pListPath] retain];
    BOOL touch = [[settings objectForKey:@"Touch"] boolValue];
    NSLog(@"%@",touch ? @"TOUCH IS YES" : @"TOUCH IS NO");

Я пробовал много разных способов получить * plistPath, NSBundle, просто строку с именем файла. также пробовал NSMutabelDictionary, регулат NSDictionary, NSArray, NSMutableArray

Кажется, ничего не работает. Попытка установки первой строки plist в корневой словарь, все равно не повезло ..

Любая помощь будет оценена .. Settings.plist имеет одно значение Touch и его клавиша - YES Большое спасибо!

EDIT: Вот пример:

<?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>
    <dict>
        <key>Touch</key>
        <true/>
    </dict>
</dict>
</plist>

1 Ответ

3 голосов
/ 02 февраля 2012

Ваш список содержит словарь верхнего уровня с одним ключом «Root».Значением для этого ключа является другой словарь с одним ключом, «Touch».

Попробуйте это:

BOOL touch = [[[settings objectForKey:@"Root"] objectForKey:@"Touch"] boolValue];

или это (немного медленнее):

BOOL touch = [[settings valueForKeyPath:@"Root.Touch"] boolValue];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...