ios - 苹果在GLPaint示例中使用哪种数据?

标签 ios nsdata cgpoint

几个月前,我基于苹果GLPaint开发了一个应用程序。
效果很好。

我记录了在屏幕上绘制简单图纸的点集。并将它们保存为点数组(转换为NSValue)。

我现在正在尝试改进我的应用程序,我再次查看了苹果示例。
他们的数据文件中的数据看起来像这样(我做了一点改动):

<data>
AAC8QgAAsEMAAMJCAICoQwAAwkIBBAKRDAADCQgCAnUMAAMJCAACYQwAAwEIAgJRDAADA
QgCAkkMAAMBCAACRQwAAwEIAgJBDAADAQgCAkEM=
</data>
<data>
AACoQgAAnEMAALpCAACdQwAAxEIAAJ1DAAGGGgAAnUMAANpCAICdQwAA4kIAgJ5DAADs
QgCAn0MAAOxCAICfQw==
</data>

所以每一组都是一张图纸,这比我的CGPoints紧凑者紧凑。

我已经成功地将CGPoints数组转换为数据并读回了文件。


当我尝试打开每个形状数据文件时,都会收到此消息(在textMate,textEdit,xCode ...上):

我想了解:
  • 苹果使用什么来获得CGPoints列表的压缩格式?
  • 如何以更具可读性的方式打开数据文件?
  • 最佳答案

    Apple的sample application中的Recording.data文件中的数据是NSArray的XML Plist表示形式,其中包含一堆NSData对象,每个对象均包含表示CGPoint结构数组的字节。请注意,这取决于CGFloat的二进制表示形式和CGPoint结构的特定布局,这在编译器或同一编译器的版本之间可能有所不同。

    您的屏幕快照似乎是NSKeyedArchiver的输出,它更安全,但开销却更大。

    如果您想要一个紧凑但仍可移植的表示形式,则可以将各个CGFloats手动序列化为可移植格式的字节数组(this previous question可能会帮助您),然后将字节数组包装在NSData中,将NSDatas放入NSArray中,然后使用writeToFile:atomically:像Apple一样将混乱输出到plist。

    关于ios - 苹果在GLPaint示例中使用哪种数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6642067/

    相关文章:

    ios - Xcode 4 : Can I get a path to the currently active file via AppleScript?

    ios - 如何从Swift 4/json字典中的多值键检索单个值?

    iOS Swift 以编程方式在 Firebase 实时数据库中创建子级

    iphone - 无法将应用程序包转换为 NSData

    android - 如何识别设备 token 是用于 Android 还是 iOS?

    ios - Swift 中的校验和和 XOR

    ios - Swift 中的 CGPointMake

    swift - 如何以编程方式滚动 iOS WKWebView,swift 4

    objective-c - 如何在 iOS 中静默调用 URL