我正在使用此函数来获取项目中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 if(mainBundle!= nil),但appDPath为null。同样的功能正在另一个项目中工作。为什么不在这里工作?有没有其他方法可以在项目中获取plist文件的路径。提前谢谢。
答案 0 :(得分:2)
检查案例。 iOS的文件系统区分大小写。
检查文件是否在目录中。在这种情况下,您需要致电pathForResource:ofType:inDirectory
。
检查您正在构建的目标的文件是否已启用。如果不是,则不会将其复制到捆绑包中。
答案 1 :(得分:2)
如果你有任何机会将你的plist放在子文件夹中,那么你应该考虑使用
[[NSBundle mainBundle] pathForResource: ofType: inDirectory:]
也可以指定目录。
答案 2 :(得分:1)
我正在使用此代码在我的项目中找到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];
}
}
答案 3 :(得分:1)
试试这个
+ (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
}