将 Plist (NSString) 解析为 NSDictionary [英] Parse Plist (NSString) into NSDictionary
问题描述
所以我有一个 plist 结构的字符串,它是动态获取的(不是来自文件系统).我将如何将此字符串转换为 NSDictionary.
So I have a plist structured string, that get dynamically (not from the file system). How would I convert this string to a NSDictionary.
我尝试将其转换为 NSData,然后使用 NSPropertyListSerialization 转换为 NSDictionary,但是当我尝试访问 NSDictionary 时,它返回[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x100539f40",这表明我的字典没有成功已创建.
I've tried converting it NSData and then to a NSDictionary with NSPropertyListSerialization, but it returns "[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x100539f40" when I attempt to access the NSDictionary, showing that my Dictionary was not successfully created.
NSString 示例(即 plist 数据):
Example of the NSString (that is the plist data):
<?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>Key1</key>
<dict>
<key>Test1</key>
<false/>
<key>Key2</key>
<string>Value2</string>
<key>Key3</key>
<string>value3</string>
</dict>
</dict>
</plist>
谢谢!
推荐答案
参见 序列化属性列表
NSData* plistData = [source dataUsingEncoding:NSUTF8StringEncoding];
NSString *error;
NSPropertyListFormat format;
NSDictionary* plist = [NSPropertyListSerialization propertyListWithData:plistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error];
NSLog( @"plist is %@", plist );
if(!plist){
NSLog(@"Error: %@",error);
[error release];
}
这篇关于将 Plist (NSString) 解析为 NSDictionary的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!