为 plist 数组中的每个项目创建新的 NSStrings

Posted

技术标签:

【中文标题】为 plist 数组中的每个项目创建新的 NSStrings【英文标题】:Creating new NSStrings for each item in a plist array 【发布时间】:2014-07-18 16:26:17 【问题描述】:

我正在尝试创建一个类,它获取 Plist 数组中的每个项目并将它们分配给 NSString 以便在程序中的其他类中使用。到目前为止,这是我所拥有的:

NSString *appBundlePath = [[NSBundle mainBundle] bundlePath];
NSString *plist = [appBundlePath stringByAppendingString:@"/Contents/Resources/Values.plist"];

plistArray = [[NSArray alloc] initWithContentsOfFile:plist];

for (NSString* plistItem in plistArray) 
    finalPlistString = plistItem;


NSLog(finalPlistString);

这段代码在应用程序包中查找 plist,将 plist 的内容分配给 NSArray,并使用 for 循环将 plistItem NSString 设置为 plist 数组中的项目。然后使用 NSLog 记录生成的字符串。它记录 plistArray 中的最后一项,这是有道理的,因为只有一个 NSString 变量可以分配。

如何为 plist 数组中的每个项目创建一个新的 NSString?如果您想知道,plistArray 和 finalPlistString 是在 .h 文件中定义的。

【问题讨论】:

没有得到你想要达到的目标?? 我想获取 plist 中的每个字符串值并将它们分配给一个 NSString 以便我可以在程序的其他地方使用这些字符串。 为什么不在程序的其他地方使用 plistArray 本身呢?它已经包含了所有的字符串值。 plistArray 中的值已经 NSStrings(除非plist 包含更复杂的实体)。并且将它们分配给 one NSString 是没有意义的。 【参考方案1】:

首先,从包中获取 plist 路径的最简单方法是

NSString *path = [[NSBundle mainBundle] pathForResource:@"Values" ofType:@"plist"];

其次,在你读入数组之后,你现在拥有了数组中的所有字符串,以便在你的程序中进一步使用。所以你需要两行代码来获取所有数据。

要访问数组中的第三项,只需使用

plistArray[2]

-- 你不需要做任何其他事情,即你甚至不需要一个变量。例如。分配给你写的标签

label.text = plistArray[2];

下面的 for 循环没有意义。要获取数组的最后一项,这样做更容易:

NSString *lastItem = plistArray.lastObject;

【讨论】:

谢谢。没有意识到我不必将值分配给 NSString 并且我可以直接使用它们。这个解决方案很简单,正是我想要的。

以上是关于为 plist 数组中的每个项目创建新的 NSStrings的主要内容,如果未能解决你的问题,请参考以下文章

plist中的NSdictionary对象需要是数组的数组,怎么转换?

需要使用 Objective C 将新的键和值添加到 Plist 中? [复制]

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

在构建之后(但在安装之前)向 Info.plist 数组添加值

从 plist 中获取数组中的字典对象的问题

将新的 plist 文件添加到 iOS 应用程序