Почему я не могу получить путь к файлу plist в моем проекте? - PullRequest
0 голосов
/ 21 сентября 2011

Я использую эту функцию для получения пути к файлу plist в моем проекте:

 + (NSString *) appDataPath{
NSLog(@"in appDataPath");
NSString *appDPath = nil;
// Get the main bundle for the app.
NSBundle* mainBundle = [NSBundle mainBundle];

if (mainBundle != nil) {
    NSLog(@"in appDataPath mainbundle");
    appDPath = [mainBundle pathForResource:@"MyAppSettings" ofType:@"plist"];
    NSLog(@"appDataPath: %@", appDPath);
}

return appDPath;
}

Он входит в if (mainBundle! = Nil), но appDPath имеет значение null. Эта же функция работает в другом проекте. Почему это не работает здесь? Есть ли другой способ получить путь к файлу plist в проекте. Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 21 сентября 2011

если по какой-либо причине у вас есть plist в подпапке, то вам следует рассмотреть возможность использования

[[NSBundle mainBundle] pathForResource: ofType: inDirectory:]

, указав также каталог.

2 голосов
/ 21 сентября 2011

Проверьте случай. Файловая система iOS чувствительна к регистру.

Проверьте, что файл не находится в каталоге. Вам нужно позвонить pathForResource:ofType:inDirectory в этом случае.

Убедитесь, что файл включен для цели, которую вы строите. Если это не так, он не будет скопирован в пакет.

1 голос
/ 21 сентября 2011

Попробуйте это

+ (NSString *) appDataPath{

     NSString *plistPath;
     NSString *rootPath = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory,
                                                                   NSUserDomainMask,
                                                                   YES) objectAtIndex:0];
    plistPath = [rootPath stringByAppendingPathComponent:@"MyAppSettings.plist"];

    if ([[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
          plistPath = [[NSBundle mainBundle] pathForResource:@"MyAppSettings" 
                                                      ofType:@"plist"];
         return plistPath;
    }
    else 
    // No plist found       
}
1 голос
/ 21 сентября 2011

Я использую этот код для поиска plist-пути в моем проекте.

-(void)CreatePlistPath
{
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    path = [[documentsDirectory stringByAppendingPathComponent:@"data.plist"] retain];

    NSFileManager *fileManager = [NSFileManager defaultManager];

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

        [fileManager copyItemAtPath:bundle toPath: path error:&error];
    }
}
...