0

在此代码之后,我的 plist 文件中没有写入任何内容。我的代码有什么问题?

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"aFile.plist"];
NSMutableDictionary *reqData = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];
/*
some modifications to "reqData"
*/
[reqData writeToFile:finalPath atomically:YES];

文件中没有写入任何内容。可能是什么问题呢?

4

4 回答 4

2

你最好写到 Document 文件夹:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask,
                                                     YES);
NSString *path = [paths objectAtIndex:0];

更新

根据NSDictionary 类参考

此方法在写出文件之前递归地验证所有包含的对象是属性列表对象(NSData、NSDate、NSNumber、NSString、NSArray 或 NSDictionary 的实例),如果所有对象都不是属性列表对象,则返回 NO,因为结果文件不是有效的属性列表。

在您的整个字典中,是否还有其他类型的对象不是这些有效对象?

于 2012-04-27T09:05:00.843 回答
1

您正在尝试将文件写回应用程序包。

这就是最有可能导致错误的原因。

如果您尝试将其写入其他地方(例如,在您的桌面文件夹中)怎么办?

于 2012-04-27T08:56:29.580 回答
0

如果您在应用程序中包含 plist,您需要在应用程序首次启动时直接将该文件复制到 Documents 中(如果尚未复制到那里)。然后,您要对 plist 执行的任何读写操作都应从 Documents 目录中的副本而不是应用程序包中的版本中完成。

于 2012-04-27T16:21:58.303 回答
0

首先要记住:

您可以从资源中读取 plist 文件,但不能修改它。

如果你想修改,

  1. 将该文件复制到 Documents 目录
  2. 根据类型将 plist 的内容复制到数组或字典中
  3. 做出你想要的改变
  4. 最后....将其保存回文档目录

做的伎俩

于 2012-04-27T16:49:37.413 回答