我想写一个保存struct array的函数。我知道,使用NSCoding是正确的方法,但只适用于类。但是我找到了一个使用包含结构本身的类的解决方法:
extension EXIFData {
class EXIFDataClass: NSObject, NSCoding {
var exifData: EXIFData?
...
}
但我如何使用它(称之为)?例如。定义为
var exif : EXIFData
或(下一步)
var exifs : [EXIFData]
我喜欢尽可能多地使用Swift 3.0的实际功能,因为我刚刚开始。我找到了一些不同的旧样式和Swift版本的解决方案。
答案 0 :(得分:1)
我不确定你的EXIFData类是什么,但我认为你最好保存一个包含EXIFData对象的类。
比如说你需要保存一堆不同类型的数据,包括EXIFData,然后你可以创建一个类,如下所示,用EXIFData类型对类进行解码,编码和初始化:
org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
SEVERE: MessageBodyWriter not found for media type=text/plain
然后你可以像这样初始化你的课程:
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
}
}
然后像这样调用您的用户“EXIFData”:
var myUserData = UserData(...) //initialize with EXIFData