MST

星途 面试题库

面试题:Swift中Codable协议在数据解析时,如何处理嵌套结构体的编码与解码?

假设有如下嵌套结构体: ```swift struct Inner { var value: String } struct Outer { var inner: Inner var outerValue: Int } ``` 请编写代码,使用Codable协议将`Outer`结构体编码为JSON数据,并从JSON数据解码回`Outer`结构体实例,处理可能出现的错误。
23.1万 热度难度
编程语言Swift

知识考点

AI 面试

面试题答案

一键面试
import Foundation

struct Inner: Codable { 
    var value: String 
}

struct Outer: Codable { 
    var inner: Inner 
    var outerValue: Int 
}

// 编码为JSON数据
func encodeOuterToJSON(_ outer: Outer) -> Data? {
    do {
        let encoder = JSONEncoder()
        encoder.outputFormatting = .prettyPrinted
        return try encoder.encode(outer)
    } catch {
        print("编码错误: \(error)")
        return nil
    }
}

// 从JSON数据解码
func decodeOuterFromJSON(_ data: Data) -> Outer? {
    do {
        let decoder = JSONDecoder()
        return try decoder.decode(Outer.self, from: data)
    } catch {
        print("解码错误: \(error)")
        return nil
    }
}

// 示例使用
let inner = Inner(value: "示例值")
let outer = Outer(inner: inner, outerValue: 42)

if let encodedData = encodeOuterToJSON(outer),
   let decodedOuter = decodeOuterFromJSON(encodedData) {
    print("解码后的实例: \(decodedOuter)")
}