在文档目录中找不到 plist 文件?如何以编程方式修改 plist?

Posted

技术标签:

【中文标题】在文档目录中找不到 plist 文件?如何以编程方式修改 plist?【英文标题】:Can not find plist file in documents directory? How to modify the plist programmatically? 【发布时间】:2011-10-13 13:13:45 【问题描述】:

我在 Xcode 4.2 中有一个应用程序。

我已根据要求创建了 plist 文件。

我从 Applications main bundle 中找到了数据并将数据放入数组中。

但由于我想在运行时修改 plist 数据,我在 Documents Directory 中找不到它

实际上我想以编程方式修改 plist。虽然我没有使用 mainbundle。

-(NSString *) saveFilePath::(NSString *)tagString     

    NSArray *arr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *strPath = [[arr objectAtIndex:0] stringByAppendingPathComponent:tagString];       
    return strPath;
 

无法检索 plist 文件。(我正在获取路径,但未获取文件路径)

我在 iphone 模拟器/App/Documents 文件夹中也找不到物理上的 plist 文件?

【问题讨论】:

你把plist文件复制到documents目录了吗? 什么? Xcode 5.0?只有 Xcode 4.2 不,我认为不需要 Xcode 会自动创建 plist 文件。 @Arpit 你能告诉我们你创建plist的代码吗? 你基本上是在做偏好吗?如果是这样,最好使用 NSDefaults 来完成,它将处理合理的默认值,将设置放在正确的位置等。 【参考方案1】:

你需要先将plist从bundle复制到文档目录

-(void) checkAndCreateSetting

    BOOL success;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath= [documentsDirectory stringByAppendingPathComponent:@"Settings.plist"];
    success = [fileManager fileExistsAtPath:writableDBPath];
    if (success) return;
    // The writable database does not exist, so copy the default to the appropriate location.
    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Settings.plist"];
    success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
    if (!success) 
        NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
    

如有任何疑问,请告诉我 感谢和问候 尼尔

【讨论】:

以上是关于在文档目录中找不到 plist 文件?如何以编程方式修改 plist?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iphone 中以编程方式创建 PLIST 文件

在我的 XCode 项目中找不到 Cordova.plist

在 PhoneGap 项目中找不到 plist

在我的开发环境中找不到 Plist 文件

在 xcode 4 中找不到 info.plist

如果在 cfbundlelocalizations 中找不到语言键,如何设置默认语言