Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何将自定义对象转换为数据格式_Swift_Codable - Fatal编程技术网

Swift 如何将自定义对象转换为数据格式

Swift 如何将自定义对象转换为数据格式,swift,codable,Swift,Codable,我有一个自定义结构,它的属性类型是其他不可编码类型的结构。它是structs中的一个复杂的结构树,我需要将它转换为数据以便保存它 我需要保存此结构(聊天) 序列化是最好的方式吗,就像在这篇文章中一样 我尝试过遵从Codable,但它给出了一个错误,说它不符合,由于类型的原因,这是预期的。请发布对象的代码和您尝试的内容内部结构也应符合codable我刚刚更新了它,以便您可以看到内部结构-它们包含非简单类型,这意味着结构不能符合codable,例如,MKMapSnapshot forMKMapSna

我有一个自定义结构,它的属性类型是其他不可编码类型的结构。它是structs中的一个复杂的结构树,我需要将它转换为数据以便保存它

我需要保存此结构(聊天)

序列化是最好的方式吗,就像在这篇文章中一样


我尝试过遵从Codable,但它给出了一个错误,说它不符合,由于类型的原因,这是预期的。

请发布对象的代码和您尝试的内容内部结构也应符合codable我刚刚更新了它,以便您可以看到内部结构-它们包含非简单类型,这意味着结构不能符合codable,例如,MKMapSnapshot for
MKMapSnapshot
:您需要为每个部件提供一种从
(NS)数据保存/检索/初始化它们的方法。首先处理每个困难的对象,然后再处理整个对象。好的,这只是一个示例,我不想手动进入整个结构中使用的每个类型并转换为NSData。是否没有办法通过序列化将整个内容直接转换为数据,或者我应该创建一个只有可编码类型的新结构并保存它。
struct Chat{
    var dictOfRecentMessages:[String:Message] = [:]
    var matchPicture:UIImage? 
    var metadata:JSON?
}

    struct Message{
        let messageID:String
        var chatID:String
        let whoSent:String
        let timeTriedToSend:Int


        var messageString:String?
        var image:ImageMessage?
        var video:VideoMessage?
        var location:LocationMessage?
        let status:String 

    }

struct ImageMessage{
    var uiImage:UIImage?
    var imageURL:String?
    var imageSize:CGSize?
}
struct VideoMessage{
    var video:NSURL?
    var videoURL:String?
}
struct LocationMessage{
    var clLocation:CLLocation?
    var mapCamera:MKMapCamera?
    var mapSnapshot:MKMapSnapshot?
}