簡體   English   中英

iOS-數組未填充-NSDictionary / NSArray

[英]iOS - Array not being filled - NSDictionary / NSArray

我遇到了XCode的問題,很快就需要幫助...我有一個plist文件,我需要訪問它,它應該填充了所有可用車輛的陣列...不幸的是,它沒有這樣做。 rootPath有一個值。 路徑具有值。 settings 具有價值,它回來的零。 為什么是這樣? 據我所知,這曾經在舊版本的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文件:

<!DOCTYPE plist SYSTEM "http://www.apple.com/DTDs/PropertyList-1.0.dtd" PUBLIC "-//Apple//DTD PLIST 1.0//EN">

-<plist version="1.0">


-<dict>

<key>Vehicles</key>


-<array>


-<dict>

<key>Display Name</key>

<string>Saloon Vehicle - 4 Seats</string>

<key>Key Name</key>

<string>Standard</string>

<key>Max Passengers</key>

<integer>4</integer>

<key>Cabmaster Code</key>

<string> </string>

<key>Image</key>

<string>Standard.png</string>

</dict>


-<dict>

<key>Display Name</key>

<string>Estate Car - 4 Seats</string>

<key>Key Name</key>

<string>Estate</string>

<key>Max Passengers</key>

<integer>4</integer>

<key>Cabmaster Code</key>

<string>E</string>

<key>Image</key>

<string>Estate.png</string>

</dict>


-<dict>

<key>Display Name</key>

<string>VIP - 4 seats</string>

<key>Key Name</key>

<string>VIP</string>

<key>Max Passengers</key>

<integer>4</integer>

<key>Cabmaster Code</key>

<string>V</string>

<key>Image</key>

<string>Exec_Car.png</string>

</dict>


-<dict>

<key>Display Name</key>

<string>MPV - 6 Seater</string>

<key>Key Name</key>

<string>MPV - 6</string>

<key>Max Passengers</key>

<integer>6</integer>

<key>Cabmaster Code</key>

<string>M</string>

<key>Image</key>

<string>6Seater.png</string>

</dict>


-<dict>

<key>Display Name</key>

<string>MPV - 7 Seater</string>

<key>Key Name</key>

<string>MPV - 7</string>

<key>Max Passengers</key>

<integer>7</integer>

<key>Cabmaster Code</key>

<string>N</string>

<key>Image</key>

<string>7Seater.png</string>

</dict>


-<dict>

<key>Display Name</key>

<string>Minibus - 8 seats</string>

<key>Key Name</key>

<string>Minibus</string>

<key>Max Passengers</key>

<integer>8</integer>

<key>Cabmaster Code</key>

<string>O</string>

<key>Image</key>

<string>Mini.png</string>

</dict>

</array>

</dict>

</plist>

更換

NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                          NSUserDomainMask, YES) objectAtIndex:0];

NSString *path = [rootPath stringByAppendingPathComponent:@"vehicles.plist"];

NSString *path = [[NSBundle mainBundle] pathForResource:@"vehicles" ofType:@"plist"];

我已經解決了這個問題! 事實證明,我有一些構建規則,這意味着不會復制Plist文件,我刪除了所有構建規則,它可以正常工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM