iOS-未填充阵列-NSDictionary/NSArray
我在XCode上遇到了问题,需要很快的帮助。。。我有一个plist文件,我需要访问,它应该是填补所有可用的车辆阵列。。。不幸的是,它没有这样做。 根路径有一个值。 路径有一个值。iOS-未填充阵列-NSDictionary/NSArray,ios,objective-c,nsdictionary,plist,Ios,Objective C,Nsdictionary,Plist,我在XCode上遇到了问题,需要很快的帮助。。。我有一个plist文件,我需要访问,它应该是填补所有可用的车辆阵列。。。不幸的是,它没有这样做。 根路径有一个值。 路径有一个值。 settings没有值,它返回为nil。为什么会这样?据我所知,这在旧版本的iOS/OS/XCode版本上使用。 任何想法都是完美的!以下是plist文件出错的代码: -(NSArray *)AllAvailableVehicles { // load in vehicles from plist da
settings
没有值,它返回为nil。为什么会这样?据我所知,这在旧版本的iOS/OS/XCode版本上使用。
任何想法都是完美的!以下是plist文件出错的代码:
-(NSArray *)AllAvailableVehicles {
// load in vehicles from plist data
//NSString *path = [[NSBundle mainBundle] pathForResource:
// @"vehicles" ofType:@"plist"];
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [rootPath stringByAppendingPathComponent:@"vehicles.plist"];
NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:path];
NSArray *array = [settings objectForKey:@"Vehicles"];
NSMutableArray *vehicleMutArray = [NSMutableArray arrayWithCapacity:20];
for (NSDictionary *dict in array){
Vehicle *vehicle = [[Vehicle alloc] init];
vehicle.displayName = [dict objectForKey:@"Display Name"];
vehicle.keyName = [dict objectForKey:@"Key Name"];
vehicle.maxPassengers = [[dict objectForKey:@"Max Passengers"] intValue];
vehicle.cabCode = [dict objectForKey:@"Cabmaster Code"];
vehicle.luggageImage = [dict objectForKey:@"Image"];
[vehicleMutArray addObject:vehicle];
[vehicle release];
}
NSArray *vehiclesArray = [[vehicleMutArray copy] autorelease];
return vehiclesArray;
}
plist文件:
-
-
车辆
-
-
显示名称
轿车-4座
键名
标准
最大乘客数
4.
司机室代码
形象
Standard.png
-
显示名称
房车-4个座位
键名
大片私有土地
最大乘客数
4.
司机室代码
E
形象
Estate.png
-
显示名称
VIP-4个座位
键名
贵宾
最大乘客数
4.
司机室代码
v
形象
Exec_Car.png
-
显示名称
MPV-6座
键名
MPV-6
最大乘客数
6.
司机室代码
M
形象
6Seater.png
-
显示名称
MPV-7座
键名
MPV-7
最大乘客数
7.
司机室代码
N
形象
7Seater.png
-
显示名称
小巴-8个座位
键名
小型巴士
最大乘客数
8.
司机室代码
O
形象
Mini.png
更换
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [rootPath stringByAppendingPathComponent:@"vehicles.plist"];
与
我已经解决了这个问题!事实证明,我有一些构建规则,这意味着Plist文件不会复制过来,我删除了所有的构建规则,它可以工作 那么,如何添加plist文件呢?它是与您的应用程序捆绑在一起的还是您正在写入doc目录?请尝试[[NSMutableArray alloc]initWithCapacity:capacity]NSLog路径,并仔细检查它是否确实正确。@CalinChitu这会造成什么变化?'arrayWithCapacity'应该能很好地完成这项工作。谢谢你的回复,卡林。我现在就试试。。。Aadhira,我在我的编译源代码中添加了它,这是因为在我开始工作之前项目的设置方式。。。让我试着做一个clean+构建,我会回复你。你是如何将vehicles.plist添加到你的项目中的?我有,它都在我的编译源代码+复制包资源中。在一次清理和构建之后,它仍然有相同的错误。
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [rootPath stringByAppendingPathComponent:@"vehicles.plist"];
NSString *path = [[NSBundle mainBundle] pathForResource:@"vehicles" ofType:@"plist"];