我在将大型plist填充到数组中时遇到了一些麻烦。以下是给我提问的代码片段:
// Populate the routes.
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"routes" ofType:@"plist"];
NSMutableArray *routes = [NSMutableArray arrayWithContentsOfFile:filePath];
NSLog(@"Routes: %@", routes);
// Populate the trips.
NSString *filePath2 = [[NSBundle mainBundle] pathForResource:@"trips" ofType:@"plist"];
NSMutableArray *trips = [NSMutableArray arrayWithContentsOfFile:filePath2];
NSLog(@"Trips: %@", trips);
我的问题是,在日志中显示每个可变数组后,routes数组的日志显示正常,但trip数组的日志根本不显示。通常当出现问题时,日志将显示类似“Trips :()”的内容,但在这种情况下该行根本不会出现。我可以在两个实例之间看到的唯一区别是路由plist是一个包含大约1000个字典对象的数组,并且trip plist有近92,000个对象。是否对钳子的尺寸有某种限制?
提前致谢。
答案 0 :(得分:3)
“钳子的尺寸是否有某种限制?”
plist的大小没有限制,但是您可以向NSLog()
命令提供的数据量有限制。
如果trips
实际上是nil
,则NSLog()
来电会成功,只需打印(null)
即可。然而,填充了trips
数组,这就是为什么它根本不打印出来的原因:NSLog()
说,“对不起,我不可能让你打印出所有这些”。
我认为由于可能的安全问题或性能问题,在最新版本的OS X中可能会发生这种情况。 (过去,用户的硬盘驱动器会填充大小为GB的日志文件,这是由一个进程每秒记录数百次错误消息的进程引起的;现在限制为每秒500个日志)。令人困惑的是,为什么没有打印出任何内容,而且您没有得到Xcode或其他任何反馈,但我想系统无法知道您对NSLog()
的使用是否有良好的意图。
答案 1 :(得分:1)
根据文档,如果存在解析问题或打开文件时出现问题,则返回nil。在那个大文件中是否有可能存在可能破坏xml的错误字符或拼写错误?
” 返回值 - > 包含aPath指定的文件内容的数组。如果无法打开文件或者无法将文件内容解析为数组,则返回nil。