Не удается прочитать файл plist?

У меня есть досадная ошибка, которая возникла внезапно. Я хотел прочитать файл .plist. Однако в настоящее время это невозможно. Это работало вчера, даже 3 часа назад, а затем мое приложение вылетело на симуляторе и на устройстве. Я прослушал этот урок (дважды) (и другие):

https://www.youtube.com/watch?v=3Oy-evy2xD8

Погуглил много решений stackoverflow (помимо этих двух...):

Plist не может быть прочитан... Что я делаю не так?< /а>

Не удается прочитать из plist

И все же я не стал ни на шаг ближе к душе.

NSError *error;
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentDirectory = [path objectAtIndex:0];

documentDirectory = [documentDirectory stringByAppendingPathComponent:@"testPlist.plist"];


NSLog(@" documentDirectory: - %@ ",documentDirectory);

if ([[NSFileManager defaultManager] fileExistsAtPath:documentDirectory])
{
    NSLog(@" The file exits! ! !");
}
else
{
    NSLog(@" The file DOES NOT exits !!!");
}

NSFileManager *fileManager = [NSFileManager defaultManager];

if(![fileManager fileExistsAtPath: documentDirectory]) {
    NSString *bundle = [[NSBundle mainBundle] pathForResource:@"testPlist" ofType:@"plist"];

    [fileManager copyItemAtPath:bundle toPath:documentDirectory error:&error];

    NSLog(@"plist is copied to Directory");
}


NSDictionary * plistDictionary = [[NSDictionary alloc] initWithContentsOfFile:documentDirectory];
NSMutableDictionary * plistMutableDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:documentDirectory];
NSArray *items = [plistDictionary objectForKey:@"Root"];

//NSMutableArray *itemsFromMutableDict = [[NSMutableArray alloc] init];
//[itemsFromMutableDict addObject:[plistDictionary objectForKey:@"Root"]];

NSLog(@" Path : %@ ",documentDirectory);
NSLog(@" Items in array = %@", items);
NSLog(@" array count = %i", [items count]);
NSLog(@" Why is this %@ ?",[plistDictionary objectForKey:@"Root"]);

Вывод:

2014-06-12 11:24:25.894 PlistTestingProject[1879:60b]  All paths : /Users/webbite_mladen/Library/Application Support/iPhone Simulator/7.1/Applications/A1A7D9E3-BFDE-4C52-8C5F-28F0D88D6F5F/Documents 

2014-06-12 11:24:25.896 PlistTestingProject[1879:60b]  documentDirectory: - /Users/webbite_mladen/Library/Application Support/iPhone Simulator/7.1/Applications/A1A7D9E3-BFDE-4C52-8C5F-28F0D88D6F5F/Documents/testPlist.plist 

2014-06-12 11:24:25.897 PlistTestingProject[1879:60b]  The file exits! ! !

2014-06-12 11:24:25.897 PlistTestingProject[1879:60b]  Path : /Users/webbite_mladen/Library/Application Support/iPhone Simulator/7.1/Applications/A1A7D9E3-BFDE-4C52-8C5F-28F0D88D6F5F/Documents/testPlist.plist 

2014-06-12 11:24:25.898 PlistTestingProject[1879:60b]  Items in array = (null)

2014-06-12 11:24:25.898 PlistTestingProject[1879:60b]  array count = 0

2014-06-12 11:24:25.899 PlistTestingProject[1879:60b]  Why is this (null) ?

Кажется, я не могу получить доступ к файлу plist.

Содержимое plist-файла:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Root</key>
        <array>
            <string>sunday</string>
            <string>monday</string>
            <integer>44</integer>
        </array>
    </dict>
</plist>

Спасибо :).


person MB_iOSDeveloper    schedule 12.06.2014    source источник


Ответы (2)


Попробуйте использовать это..

NSDictionary *dictRoot = [NSDictionary DictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"file_name" ofType:@"plist"]];

NSArray *arrRoot = [NSArray arrayWithArray:[dictRoot objectForKey:@"Root"]];

person Maitri Raval    schedule 12.06.2014

Самое простое решение, наконец, сработало:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"myPlistFile"
                                                              ofType:@"plist"];
NSMutableArray *myArray = [NSMutableArray arrayWithContentsOfFile:plistPath];
person MB_iOSDeveloper    schedule 12.06.2014