0

I convert the DrawObj Array (custom object array) to NSData and save it to cache directory use NSFileManager to save then I use [NSData dataWithContentsOfFile:fileURL options:0 error:&err] to get NSData from filesystem Now I try to restore the NSData to DrawObj Array ([DrawObjs]) How to do ?

I have try to use

extension Data {
    func elements <T> () -> [T] {
        return withUnsafeBytes {
            Array(UnsafeBufferPointer<T>(start: $0, count: count/MemoryLayout<T>.size))
        }
    }
}

if let objs:[DrawObj] = self.readFromFile()?.elements() {
    self.drawObjs = objs
}

but is crashenter image description here

update show DrawObj model

class DrawObj{

    var id : String!;
    var height : CGFloat = 0.0;
    var width : CGFloat = 0.0;
    var points:[CGPoint] = [];
    var oPoints:[CGPoint] = [];
    var angle : CGFloat = 0.0;
    var scaleX : CGFloat = 1.0;
    var oStartPoint:CGPoint = CGPoint.zero
    var oEndPoint:CGPoint = CGPoint.zero
    var scaleY : CGFloat = 1.0;
    var currentHeight : CGFloat = 0.0;
    var currentWidth : CGFloat = 0.0;
    var radius : CGFloat = 0.0;
    var drawPara : DrawParam = DrawParam();
    var text : String = "";
    var isFlip:Bool = false;
    var url:String = "";
    var image:UIImage?
    var fontSize : CGFloat = 16
    var originX:String = "left"
    var originY:String = "top"
    var pathPoint:[PathPoint] = []
    var stokeDashArray:[Int] = []
    var beizerPath:UIBezierPath?
    var nickName:String = ""

    init(id: String ){
        self.id = id;
    }

    init( id:String , drawType:DrawType , fillColor : DrawColor , stokeColor : DrawColor , lineWidth : DrawStokeWidth ) {
        self.id = id;
        self.drawPara.drawType = drawType
        self.drawPara.fillColor = fillColor
        self.drawPara.stokeColor = stokeColor
        self.drawPara.lineWidth = lineWidth
    }

}
jansma
  • 1,605
  • 1
  • 15
  • 22

0 Answers0