2017-01-23 67 views
0

我想写一个函数来保存我的结构数组。我知道,使用NSCoding是正确的方式,但只适用于类。但是我发现使用类包括结构本身的一种变通方法:Helperclass用NSCoding保存结构

extension EXIFData { 
    class EXIFDataClass: NSObject, NSCoding { 

     var exifData: EXIFData? 
... 
} 

但是我怎么使用它(叫)?例如。定义为

var exif : EXIFData 

或(下一步)

var exifs : [EXIFData] 

我喜欢用尽可能多的雨燕3.0的实际特点,因为我刚刚开始。我发现了一些老版本Swift的不同解决方案。

回答

1

我不确定你的类EXIFData是什么,但我认为你最好保存一个包含EXIFData对象的类。

说,例如,你需要保存一堆不同类型的数据,包括EXIFData的,那么你可以创建一个类一样,解码,编码,并初始化类的EXIFData键入以下内容:

class UserData: NSObject, NSCoding { 

    var exifData: EXIFData 
    //other variables of data.... 

    required init?(coder aDecoder: NSCoder) { 
     exifData = aDecoder.decodeObject(forKey: "EXIFData") as! EXIFData 
     //decode other values 
    } 

    init(exifData: EXIFData) { 
     self.exifData = exifData 
     //intialize other values 
    } 

    func encode(with aCoder: NSCoder) { 
     aCoder.encode(exifData, forKey: "EXIFData") 
     //encode other values 
    } 

} 

然后,你可以初始化类,如下所示:

var myUserData = UserData(...) //initialize with EXIFData 

然后打电话给你的用户 “EXIFData” 像这样:

myUserData.exifData 
+0

EXIFData是一个结构体。只有这些数据需要加载和保存。最后我想保存一个数组:[EXIFData] –