0

我正在尝试创建一个 plist 文件,稍后将在我的应用程序中写入该文件。在第一个 viewDidLoad 我调用以下方法

-(void)createFavoritesFile{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *documentDBFolderPath = [documentsDirectory stringByAppendingPathComponent:@"data.plist"];

    if (![fileManager fileExistsAtPath:documentDBFolderPath])
    {
        NSLog(@"file doesnt exist");
        NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"data.plist"];
        [fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error];
    }
    else{
        NSLog(@"file exists");
    }
}

但是,每次我运行应用程序时,我都找不到创建的文件,如果我关闭应用程序并重新打开,NSLog 会显示该文件不再存在。我错过了什么吗?

4

2 回答 2

1

您忽略了来自-copyItemAtPath:toPath:error:. 我愿意打赌电话正在返回NO并填充一些错误。您应该检查它的返回值,如果它返回则打印出错误NO

失败的一个可能原因是,由于某种原因,您实际上可能还没有 Documents 文件夹。您可以要求NSFileManager为您创建它。

于 2012-10-30T22:24:17.367 回答
0

打印您的资源路径并查看该文件是否存在其中。如果是这样,但不工作检查这个问题:Working with paths from [[NSBundle mainBundle] resourcePath]

无论如何,如果你的资源在你的主包中,你总是可以使用:

- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension
于 2012-10-30T22:27:16.750 回答