Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c .plist文件写入失败!这个代码有什么问题?_Objective C_Ios_Cocoa_Plist_Nsmutabledictionary - Fatal编程技术网

Objective c .plist文件写入失败!这个代码有什么问题?

Objective c .plist文件写入失败!这个代码有什么问题?,objective-c,ios,cocoa,plist,nsmutabledictionary,Objective C,Ios,Cocoa,Plist,Nsmutabledictionary,在此代码之后,我的plist文件中没有写入任何内容。我的代码有什么问题 NSString *path = [[NSBundle mainBundle] bundlePath]; NSString *finalPath = [path stringByAppendingPathComponent:@"aFile.plist"]; NSMutableDictionary *reqData = [NSMutableDictionary dictionaryWithContentsOfFile:fina

在此代码之后,我的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];

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

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

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


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

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

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


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

您最好写入文档文件夹:

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

根据:

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


在您的整个字典中,是否有任何类型不同于这些有效类型的对象?

您最好写入文档文件夹:

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

根据:

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


在您的整个字典中是否有任何类型不同于这些有效类型的对象?

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

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

首先要记住:

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

如果要修改

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

  • 这就是要记住的第一件事:

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

    如果要修改

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

  • 实际上,这是一个iOS应用程序。@DhilipSiva好的,您是否尝试将文件写入任何其他可接受的iPhone位置?这是正确的响应。您无法写入应用程序包。在Mac电脑上,你可以在某些有限的情况下侥幸逃脱,但你不能安全地假设你能做到;在iOS上,您不能这样做,句号。实际上,这是一个iOS应用程序。@DhilipSiva好的,您是否尝试将文件写入任何其他可接受的iPhone位置?这是正确的响应。您无法写入应用程序包。在Mac电脑上,你可以在某些有限的情况下侥幸逃脱,但你不能安全地假设你能做到;在iOS上,你不能这样做,句号。我可以从文件中读取数据。但是,我无法写入任何内容。我可以从文件中读取数据。但是,我无法写任何东西。修改了我的答案。。。检查是否是您的情况?不,我只有两种数据类型:NSNumber和NSDate。@DhilipSiva请显示您修改过的代码,您使用文档目录的地方。添加一个
    NSLog(@“filename='%@',finalPath)<代码>请求数据写入文件
    返回布尔值。价值是什么?修改我的答案。。。检查是否是您的情况?不,我只有两种数据类型:NSNumber和NSDate。@DhilipSiva请显示您修改过的代码,您使用文档目录的地方。添加一个
    NSLog(@“filename='%@',finalPath)<代码>请求数据写入文件
    返回布尔值。价值是什么?