关于swift解档的坑

iOS中储存的方式有很多种,SQL,CoreData,文件等等

其中归解档也是一种常见的持久化储存
swift归解有很多坑,这里总结一下

  1. 类名修改后解档会闪退
    归档时的对象名称和解档后不一致就会找不到,直接闪退
  2. target名称修改后解档会闪退
    原因是swift会以target名称创建命名空间,target改掉之后等于类名被改掉,同1

当项目有需要混淆且碰到归解档存储时,一定要避开模型和数据的混淆,以免发生上诉情况,
如已发生建议将target和模型数据名称改回去
或使用新Api来处理



@available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *)
@nonobjc public static func unarchivedObject(ofClass cls: DecodedObjectType.Type, from data: Data) throws -> DecodedObjectType? where DecodedObjectType : NSObject, DecodedObjectType : NSCoding

@available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *)
@nonobjc public static func unarchivedObject(ofClasses classes: [AnyClass], from data: Data) throws -> Any?


当然归档本身也有很多的劣势

  • 容易丢失数据
  • 性能不好
  • 如果碰到上诉问题,可能需要删掉重新安装才能正常运行,体验相当不好
    最后重要的事情说三次:

不要用归解档!
不要用归解档!
不要用归解档!

你可能感兴趣的:(关于swift解档的坑)