4

我正在构建一个本质上是一个目录的 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"> <array> <array> <string>Last Name</string> <string>First Name</string> <string>Address</string> <string>Phone Number</string> <string>Email</string> </array> <array> <string>Last Name</string> <string>First Name</string> <string>Address</string> <string>Phone Number</string> <string>Email</string> </array> <array> <string>Last Name</string> <string>First Name</string> <string>Address</string> <string>Phone Number</string> <string>Email</string> </array>

这个 plist 设置好了吗,还是我需要进行更改。如果设置得当,我只是在解析上有点迷失。我过去曾在播客中使用过 GDATAXML,但不确定它与应用内 PLIST 的关系如何。

4

4 回答 4

5

如果要将 plist 加载到数组或字典中,只需使用以下方法:

NSArray * myArray = [NSArray arrayWithContentsOfFile: <plist-file-path>];

NSDictionary * myDictionary = [NSDictionary dictionaryWithContentsOfFile: <plist-file-path>];

要在 Xcode 中创建 plist,只需选择File->New并从Resource部分选择Property List模板。然后您将看到属性列表编辑器,因此无需尝试手动编写代码。

于 2012-08-16T14:04:31.247 回答
1

不要尝试从您的 plist 中解析 xml。

您必须将 plist 传递给NSDictionary

NSString *pathToPlist = [NSString stringWithFormat:@"%@/your_plist_file.plist",[[NSBundle mainBundle]resourcePath]];
NSDictionary *plistDictionary = [NSDictionary dictionaryWithContentsOfFile:pathToPlist];

//now you can access the keys and values:
for (NSString *key in plistDictionary) 
    NSLog(@"key = %@ and value = %@", key, [plistDictionary objectForKey:key]);

//or pass all values to an array:
NSArray *valArray = [plistDictionary allValues];
于 2012-08-16T14:15:34.077 回答
1

在斯威夫特 3 中:

if let path = Bundle.main.path(forResource: "FileName", ofType: "plist"), 
   let dict = NSDictionary(contentsOfFile: path) as? [String: AnyObject] {
    // use swift dictionary as normal
}

如果你的第一个节点是一个数组,你可以使用这样的数组(在这种情况下,数组包含字典元素):

if let path = Bundle.main.path(forResource: "FileName", ofType: "plist"),
   let array = NSArray(contentsOfFile: path) as? [Dictionary<String, Any>] {
    // use swift array as normal
}
于 2017-04-13T14:25:11.420 回答
-4

使用NSXMLParser. 文档在这里。

基本上你会得到一个NSDictionary文件的内容。然后使用

[aDictionary objectForKey:@"foo"];
于 2012-08-16T14:09:45.533 回答