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
}
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
}
}