0

我在这里有有趣的事情,我在我的项目中使用 xcode 4,我想创建简单的 .plist 文件来保存几个值,这些值将在代码执行期间用于不同目的。这是我用来创建 plist 的代码:

- (NSString *)dataFilePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:@"somelist.plist];
}

应该将 plist 名称附加到路径的最后一行代码没有完成它的工作。永远不会创建 Plist。现在,奇怪的是,我设法在几天前使用相同的代码创建了一个。之后,我只在 AppDelegate 中移动了这段代码,因为我从不同的地方调用了这段代码。我发现当我切换到 4.3 模拟器然后在 iphone 设备上尝试它时它不起作用。当我切换到 4.2 模拟器时,它可以工作,因为已经有一个 plist,但是当我更改它的名称(创建新的)时,什么也没有发生 - 意思是,没有创建列表。我也尝试将代码移回原始位置,但这并没有给出预期的结果。

4

1 回答 1

0

无论如何,您的代码不应该创建一个 plist,只返回一个路径。为了在所选路径实际保存 plist,您可以选择几种方法,例如在 NSDictionary 上使用以下方法:

- (void)saveDictionary 
{
    NSDictionary *dictionary = [NSDictionary dictionaryWithObject:@"bla" forKey:@"test"];
    NSString *path = [self datafilePath];
    [dictionary writeToFile:path atomically:YES];
}

- (NSString *)dataFilePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:@"somelist.plist];
}
于 2011-05-23T06:51:44.973 回答