如何读取和解析 plist

Posted

技术标签:

【中文标题】如何读取和解析 plist【英文标题】:How to read and parse a plist 【发布时间】:2013-12-27 20:13:28 【问题描述】:

我喜欢阅读和解析 plist 文件,但它不会工作。

这是我的代码:NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:self.plistPath]; dict 总是 (null)

我尝试将内容作为字符串获取,这是我的代码:

NSString *string = [[NSString alloc] initWithData:[NSData dataWithContentsOfFile:self.plistPath] encoding:NSUTF8StringEncoding];

self.plistPath is /tmp/com.apple.audio.hogmode.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/>
</plist>

我做错了什么?

【问题讨论】:

文件内容是什么?你确定是代表字典的属性列表吗? 请显示 self.plistPath 值或您用于创建它的代码。 我已经用你的 plist 内容测试了你的代码,结果是一个空字典,正如人们所期望的那样。 【参考方案1】:

想通了!

NSString *error;
NSPropertyListFormat format;
NSDictionary *dict = [NSPropertyListSerialization propertyListFromData:[NSData dataWithContentsOfFile:self.plistPath] mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error];

【讨论】:

以上是关于如何读取和解析 plist的主要内容,如果未能解决你的问题,请参考以下文章

如何将此 .plist 文件直接解析为 Swift 中的对象?

cocos2dx-深度解析plist文件(游戏对象的数据如何从plist创建获取)

Java解析plist文件

如何读取 plist 中的响应字符串?

Android解析Plist文件

解析 plist 文件并获取键的值