Ios 我能读一本书,但读不到另一本

Ios 我能读一本书,但读不到另一本,ios,objective-c,plist,Ios,Objective C,Plist,我在支持文件中创建了两个名为information.plist和data.plist的plist文件,并将它们添加到复制包资源中 我使用下面的代码从plist读取数据 NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory , NSUserDomainMask , YES ); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString

我在支持文件中创建了两个名为information.plist和data.plist的plist文件,并将它们添加到复制包资源中

我使用下面的代码从plist读取数据

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory , NSUserDomainMask , YES );
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"data.plist"];
NSMutableDictionary* dictPlist = [ [ NSMutableDictionary alloc ] initWithContentsOfFile:filePath];
并尝试显示plist中的数据:

NSMutableDictionary *data1 = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
NSLog(@"%@", data1);
我从information.plist获取数据,但从data.plist获取“null”

我错过什么了吗

谢谢你的帮助

试试这个:

// Path of plist from bundle
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];

// Since your plist's root is a dictionary else you should form NSArray from contents of plist
NSDictionary *dataPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];
说明:您的plist位于应用程序包中,而不在文档目录中,这就是您无法获取它们的原因。请尝试以下操作:

// Path of plist from bundle
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];

// Since your plist's root is a dictionary else you should form NSArray from contents of plist
NSDictionary *dataPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];


说明:您的plist位于应用程序包中,而不是文档目录中,这就是您无法获取它们的原因。

这两个plist文件位于应用程序包中,而不是文档文件夹中。当然,除非您有其他复制文件的代码。但是为什么information.plist可以工作呢?如何将此文件复制到文档文件夹?您从何处读取?捆绑包还是文档?当我发布此应用程序时,我应该从文档中读取plist?是否正确?否。支持文件中的plist文件可能是应用程序包的一部分,而不是文档文件夹。这两个plist文件位于应用程序包中,而不是文档文件夹中。当然,除非您有其他复制文件的代码。但是为什么information.plist可以工作呢?如何将此文件复制到文档文件夹?您从何处读取?捆绑包还是文档?当我发布此应用程序时,我应该从文档中读取plist?是否正确?否。支持文件中的plist文件可能是应用程序包的一部分,而不是文档文件夹。如果要将plist放入支持文件中,则必须按照我在代码中提到的那样从包中读取它。`NSString plistPath=[[NSBundle mainBundle]pathForResource:@“data”of type:@“plist”];NSMutableDictionary dictPlist=[[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];NSLog(@“-------------这是唯一的方法:%@”,dictPlist);`又是空的。我正在用我的iphone进行测试,这有关系吗?请检查文件名,包括外壳。它必须是
支持文件
文件夹中的
data.plist
。正如我上面所建议的,在
.app
文件中编译应用程序后,请仔细检查
data.plist
的当前状态。感谢您的帮助,对我来说意义重大。随时乐意帮助。它解决了您的问题吗?如果您将PLIST放在支持文件中,那么您必须按照我在代码中提到的那样从bundle中读取它。`NSString plistPath=[[NSBundle mainBundle]pathForResource:@“data”of type:@“PLIST”];NSMutableDictionary dictPlist=[[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];NSLog(@“-------------这是唯一的方法:%@”,dictPlist);`又是空的。我正在用我的iphone进行测试,这有关系吗?请检查文件名,包括外壳。它必须是
支持文件
文件夹中的
data.plist
。正如我上面所建议的,在
.app
文件中编译应用程序后,请仔细检查
data.plist
的当前状态。感谢您的帮助,对我来说意义重大。随时乐意帮助。它解决了你的问题吗?