从plist读

时间:2012-02-02 03:30:38

标签: iphone objective-c xcode plist

我从plist文件中读取时遇到问题 我将Settings.plist文件保存在我的项目中(在Resources文件夹中进出) 并没有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第一行设置为Root词典,仍然没有运气..

任何帮助都会被贬低.. Settings.plist具有单个值Touch,其键为YES 非常感谢!

编辑: 这是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>
    <dict>
        <key>Touch</key>
        <true/>
    </dict>
</dict>
</plist>

1 个答案:

答案 0 :(得分:3)

您的plist包含一个包含一个键“Root”的顶级词典。该键的值是另一个带有一个键的字典“Touch”。

试试这个:

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

或者这个(稍慢):

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