如何仅从 plist 文件中加载选定的数据

Posted

技术标签:

【中文标题】如何仅从 plist 文件中加载选定的数据【英文标题】:How to load only selected data from plist file 【发布时间】:2013-02-27 19:55:00 【问题描述】:

我有一个以 Root 为数组的 plist,然后这个数组中的每个项目都是一个带有对象的字典:name(String) 和 surname(String)。我想显示我文件中的所有名称。目前我正在使用此代码:

   NSArray *myData = [[NSArray alloc] initWithContentsOfFile:mypath];
   NSMutableArray *names = [[NSMutableArray alloc] init];
   for (int i=0; i < myData.count; i++) 
       [names addObject:[[myData objectAtIndex:i] objectForKey:@"name"]];
   

有什么方法可以将键 @"name" 的值直接从 plist 文件加载到 NSMutableArray *names 中?如果我只需要 @"name" 值,我只是不想将 plist 文件的全部内容加载到内存中。

【问题讨论】:

如果你的 plist 是这样设计的,你就不能。 plist 有多大?我真的不应该为此担心。 目前它并不大,但我将拥有每个大约 30 个键的字典,如果我想在我的 UITableView 中只显示“名称”值,那么我必须加载所有数据进入内存(所有键和值)。我只是担心如果我的 plist 文件会变得非常大,我以后可能会遇到一些内存问题。 我认为您不必担心太多。如果您真的想单独加载某些内容,请将其放在单独的 plist 中。 这与 Xcode 几乎没有关系。重新标记。 【参考方案1】:

没有。加载 plist 是一个全有或全无的事情。除非您的 plist 大量,否则我不会担心。如果是,那么您可能需要考虑将其拆分为多个文件,而不是编写自己的 plist 反序列化器(因为我向您保证 CoreFoundation 的 plist 解析器会比您的更快)。

【讨论】:

以上是关于如何仅从 plist 文件中加载选定的数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Boot 进行测试时仅从测试/资源中加载数据

如何在不更改顺序的情况下从 plist 加载数据

EntityFramework - 仅从集合中加载最后一个子项(性能问题)

从类别中加载所有产品并按 Magento 中选定的多选属性进行过滤

Xcode:如何测试主包 .plist 文件内容?

sh 一个Xcode运行脚本,它从文件中加载一个字符串,并将该字符串作为Plist键的值。