Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-未填充阵列-NSDictionary/NSArray_Ios_Objective C_Nsdictionary_Plist - Fatal编程技术网

iOS-未填充阵列-NSDictionary/NSArray

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

我在XCode上遇到了问题,需要很快的帮助。。。我有一个plist文件,我需要访问,它应该是填补所有可用的车辆阵列。。。不幸的是,它没有这样做。 根路径有一个值。 路径有一个值。
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"];