如何输出视图层次结构&内容到文件?

时间:2015-08-22 21:30:31

标签: swift core-data uiview io nsmanagedobject

我正在编写一个美化的'paint'应用程序,用户可以在其中粘贴图像,绘制一堆UIBezier曲线,然后移动所有这些东西并旋转它们。

大多数是通过将UIImageViews和(子类)UIViews作为子视图堆叠到视图控制器的主视图中来实现的。

我希望用户能够将其创建状态保存为某种文件并与其他人共享(例如通过DropBox)。

保存本身不是问题(我知道如何保存文件!),只是将应用程序中的所有信息存入文件然后重新加载的“最佳”方式。

我猜测已经有完善的框架可以做到这一点,但奇怪的是,没有找到解决这个问题的任何东西。

所以,在我开始编写自己的自定义方法之前,我想我会问:

是否有一些推荐,批准(甚至可能是'简单';-))的方式来实现保存 - 就像写入文件一样 - 给定UIView的所有子视图的状态?

您对我“想要做什么”的建议?感谢。

1 个答案:

答案 0 :(得分:0)

TL;博士

走下去
NSKeyedArchiver.archiveRootObject(view, toFile: "/path/to/archive")

即将上映
let view = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive")

UIView Documentation

UIView符合NSCoding

enter image description here

NSCoding可以创建archives,其中

  

提供了一种将对象和值转换为独立于体系结构的字节流的方法。

现在我们已经完成了拼图的所有部分,让它们放在一起:

我们知道我们需要一个归档器,所以让我们搜索文档,直到找到有希望的东西: enter image description here

宾果! NSKeyedArchiver

让我们使用此类将UIView序列化为archiveRootObject:toFile:的文件。然后我们将使用unarchiveObjectWithFile:从文件中反序列化它。

保存到文件
NSKeyedArchiver.archiveRootObject(view, toFile: "/path/to/archive")

从文件中读取
let view = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive")