用触动怎么读取plist的数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用触动怎么读取plist的数组?相关的知识,希望对你有一定的参考价值。

用触动精灵的plist.read怎么读取plist的数组中指定的值?求大神解答,谢谢。

参考技术A .plist文件里面放的可能是数组也可能是字典,我们如果直接用NSLog方法打印数组,字典的时候,我们会得到的就是这样的编码格式的内容,这显然是不能用在android的,所以我们的思路是要将.plist中的内容打印为我们能处理的内容,那就是JsonString了。所以ios这边的做法,如图片所示,先将plist文件放入,然后读取出内部的数组信息,然后用SBJson转化为NSString,然后在NSLog打印出来,运行程序我们会得到

数组无法从 plist 中读取数据

【中文标题】数组无法从 plist 中读取数据【英文标题】:array can't read data from plist 【发布时间】:2012-05-19 19:19:02 【问题描述】:

我发现了几个类似的主题,但没有一个能解决我的问题。 基本上我想从 plist 中的数组中读取 nsstring,然后我想覆盖 nsstring 值。

NSArray *directoriespaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
NSString *documentsDir = [directoriespaths objectAtIndex:0];
NSString *fullnamefordir = [documentsDir stringByAppendingPathComponent:@"data.plist"];

        NSArray *turns = [NSArray arrayWithContentsOfFile:fullnamefordir];
        NSString *resultofarray = [turns objectAtIndex:0];
        NSLog(@"%@",turns); 
        NSLog(@"%@",resultofarray); 

nslog 总是显示 null 并且到目前为止我还没有尝试保存任何内容,因为我什至无法读取该值:/

<?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>
    <string>8</string>
</array>
</plist>

我也尝试过使用 nsdictionary,但它也不起作用 在此先感谢:)

【问题讨论】:

【参考方案1】:

首先检查您的plist文件是否存在于文档目录中。

NSFileMangaer *objFileManager=[[NSFileManager alloc]init];
BOOL isfileExist=[objFileManager fileExistsAtPath:yourDocumentDirectoryPath];

如果 Bool 值为 true,则检查 plist 的内容。 可能是文件目录中不存在该文件,它在资源中。 如果您没有将 plist 从资源文件夹复制到文档目录,请先将其复制到那里,然后尝试访问它。

【讨论】:

nslog 显示该文件确实存在。将文件从资源复制到文档目录是什么意思,我在哪里可以找到这个文件夹? 检查您的文档目录中的 plist 文件。 YourUsername->Library->ApplicationSupport->IphoneSimulator->5.0->ChooseApplicationID->Documents 如果有很多应用程序可用,请删除所有并运行应用程序..只有一个应用程序会在那里,然后检查文档目录。 就像你说的,我删除了所有申请文件,我再次构建了我的应用程序。奇怪的是,现在我的 plist 文件在 Documents 中不存在,而且 nslog 显示该文件不存在。在这种情况下我该怎么办?顺便感谢您的回复。 这意味着您的 plist 文件在 resourceFolder 中,在开始任何操作之前先将其复制到文档目录中。 NSString *resourcePathPlist= [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];检查此路径是否存在。使用 fileManager 对象将其复制到 documentFolder。 [fileManagerObject copyItemAtPath:resoucePlistPath toPath:documentDirectoryPath 错误:&err]; 您无法更新应用程序包中的文件。 Application Bundle 文件是只读的。要对其进行编辑,您必须将其复制到文档中并开始操作。您在 xcode 中看到的文件位于 Application Bundle 中,您可以在 xcode 中对其进行编辑,但在运行应用程序时您无法对其进行编辑,即是只读的。

以上是关于用触动怎么读取plist的数组?的主要内容,如果未能解决你的问题,请参考以下文章

Swift:如何在 plist 的数组中读取多个数组?

如何从 plist 数组中读取一个条目

数组无法从 plist 中读取数据

如何在 swift 中读取数组和字典的 plist

从 plist 读取对象到 NSArray

如何从 plist iOS 中读取数组