【问题标题】:How to find archived object file?如何找到存档的目标文件?
【发布时间】:2013-07-12 19:21:06
【问题描述】:

我正在执行以下操作以将对象存储为存档:

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:self.shapeLayers] forKey:@"mySavedArray"];

我知道它可以正常工作,因为我可以重新加载它。问题是,我怎样才能找到这个文件?我想在存档后查看它的大小,以将存档与 .m 文件进行比较,最终我可能需要将其上传到服务器。我是否正确保存它,还是应该以不同的方式进行?

【问题讨论】:

  • 您可以将其保存为文档文件夹中的 plist 并打开 iTunes 文件共享。我将在今天晚些时候添加代码。
  • @wolflink - 我不知道将它保存为 pList 是否可行,这是一个 ShapeLayers 数组,我相信您只能将某些类型保存到 pList 中?无论如何,也许我对此感到困惑,有兴趣听听您要说的话。感谢您的回复。

标签: iphone ios cocoa-touch nskeyedarchiver


【解决方案1】:

标准用户默认设置存储在“App 主目录/Library/Prefereneces/”中的单个文件中。归档数据是该文件的一部分。它不保存为单独的文件。如果要获取数据大小,请使用 NSData 的 .length 属性。

NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:self.shapeLayers];
NSUInteger size = [archivedData length];
[[NSUserDefaults standardUserDefaults] setObject: forKey:@"mySavedArray"];

【讨论】:

  • 谢谢你有没有办法将它归档到一个单独的文件中?
  • 使用 [NSKeyedArchiver archiveRootObject:toFile:]。通常,您会将文件写入文档目录。如果要将其保存在其他位置,请指定不同的文件路径。 NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString *archiveFile = [documentsDirectory stringByAppendingPathComponent:@"data.archive"]; [NSKeyedArchiver archiveRootObject:dict toFile:archiveFile];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 2017-03-09
  • 2014-06-29
  • 1970-01-01
相关资源
最近更新 更多