0

我正在从 plist 文件中保存/检索数据,但我遇到了问题,如果 plist 文件不存在,我将无法创建它。我需要在应用程序的 Document 文件夹中创建它。我的代码是

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"playersnames.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: path])
{
    path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"playersnames.plist"] ];

}

NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:path];


NSFileManager *fileManager2 = [NSFileManager defaultManager];
//NSMutableDictionary *data;

if ([fileManager2 fileExistsAtPath: path])
{
    data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];

}
else
{
    // If the file doesn’t exist, create an empty dictionary
    data = [[NSMutableDictionary alloc] init];

}

我搜索以解决问题,但没有机会,我不知道代码中缺少什么。

请如果有人可以向我解释如何做到这一点。

我的代码在 viewDidLoad 中。

提前致谢。

4

1 回答 1

0

您永远不会创建文件 - 将这个第一个引用更改为 fileExists:

if (![fileManager fileExistsAtPath: path])
{
    path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"playersnames.plist"] ];

}

对此:

if (![fileManager fileExistsAtPath: path])
{
    BOOL ret = [[NSDictionary dictionary] writeToFile:path atomically:YES];
    assert(ret); // better work!
}

现在您将创建文件。稍后您将需要通过将完整的字典保存到同一文件中来做同样的事情。重要提示:测试这些调用的返回码!

于 2012-08-10T00:59:41.943 回答