无法保存plist ios

我能够保存plist文件在模拟器中,但我不能保存在设备中的Plist文件。 任何build议。

我在用着

NSString* dictPath = [[NSBundle mainBundle] pathForResource:@"Dictionary" ofType:@"plist"]; NSDictionary * dict = [[NSDictionary alloc] initWithContentsOfFile:dictPath]; 

阅读文件

 [dict writeToFile:dictPath atomically: YES]; 

写入文件。

你不能写入主包。 你只能从主包中读取。 如果你想写一个文件,你需要把它放在你的应用程序的文档目录。

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist",plistName]]; 

如果您需要主包中的plist,您可以先将其复制到文档目录中,然后对其进行修改。 build议进行检查,确保只复制一次。

 NSError *error; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist",plistName]]; NSFileManager *fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath: path]){ NSLog(@"File don't exists at path %@", path); NSString *plistPathBundle = [[NSBundle mainBundle] pathForResource:plistName ofType:@"plist"]; [fileManager copyItemAtPath:plistPathBundle toPath: path error:&error]; }else{ NSLog(@"File exists at path:%@", path); } 

一般来说,你可以将它们存储在〜/ Documents或者〜/ Library中,具体取决于文件。 问题什么是文档目录(NSDocumentDirectory)? 包括您需要了解这些的文档链接和示例代码。

您需要将plist保存在Documents目录中

来写

 NSString *mainBundlePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *dictPath = [mainBundlePath stringByAppendingPathComponent:@"Dictionary"]; NSDictionary * dict = ...; //Construct your dictionary [dict writeToFile:dictPath atomically: YES]; 

读书

 NSDictionary * dict = [[NSDictionary alloc] initWithContentsOfFile:dictPath];