使用NSKeyedArchiver将内容保存到磁盘时,存储在iPhone上的位置在哪里?

时间:2010-03-16 10:47:53

标签: iphone nskeyedarchiver

示例:如果我使用了这个,那么iPhone在哪里存储文件?

if (![NSKeyedArchiver archiveRootObject:your_object toFile:@"filename.plist"])
   // save failed.

在我的mac上,filename.plist直接进入Macintosh HD。没有文件夹。此外,NSKeyedArchiver似乎没有要求路径,仅用于文件名。奇怪与否?

该文件如何备份iTunes?

3 个答案:

答案 0 :(得分:4)

那实际上取决于你要求它保存文件的位置,在你的情况下,你说的是 它存储filename.plist,它将存储在根/

如果你想把它存放在一个特定的位置,只需给它一个完整的路径,就像Diederik Hoogenboom告诉你的那样(这会将它存储在Documents目录中)

或者只是给它保存文件的绝对路径。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent: @"myFile.plist"];
[NSKeyedArchiver archiveRootObject:your_object toFile:filePath];

这应该可能已经为你清理了一点。

答案 1 :(得分:1)

存储文件的正确位置是文档文件夹:

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

答案 2 :(得分:1)

archiveRootObject:toFile:
所以你应该传递一个路径而不是文件名。否则NSKeyedArchiver将假定您要将其存储在设备硬盘的根目录中 为确保iTunes能够备份内容,您需要将数据保存在文档文件夹中,就像Diederik Hoogenboom已经向您展示的那样。请查看this指南。