How to use singleValueContainer method of _PlistDecoder class

Best Swift-snapshot-testing code snippet using _PlistDecoder.singleValueContainer

PlistEncoder.swift

Source:PlistEncoder.swift Github

copy

Full Screen

...138            topContainer = container139        }140        return _PlistUnkeyedEncodingContainer(referencing: self, codingPath: self.codingPath, wrapping: topContainer)141    }142    public func singleValueContainer() -> SingleValueEncodingContainer {143        return self144    }145}146// MARK: - Encoding Storage and Containers147fileprivate struct _PlistEncodingStorage {148    // MARK: Properties149    /// The container stack.150    /// Elements may be any one of the plist types (NSNumber, NSString, NSDate, NSArray, NSDictionary).151    private(set) fileprivate var containers: [NSObject] = []152    // MARK: - Initialization153    /// Initializes `self` with no containers.154    fileprivate init() {}155    // MARK: - Modifying the Stack156    fileprivate var count: Int {157        return self.containers.count158    }159    fileprivate mutating func pushKeyedContainer() -> NSMutableDictionary {160        let dictionary = NSMutableDictionary()161        self.containers.append(dictionary)162        return dictionary163    }164    fileprivate mutating func pushUnkeyedContainer() -> NSMutableArray {165        let array = NSMutableArray()166        self.containers.append(array)167        return array168    }169    fileprivate mutating func push(container: NSObject) {170        self.containers.append(container)171    }172    fileprivate mutating func popContainer() -> NSObject {173        precondition(!self.containers.isEmpty, "Empty container stack.")174        return self.containers.popLast()!175    }176}177// MARK: - Encoding Containers178fileprivate struct _PlistKeyedEncodingContainer<K : CodingKey> : KeyedEncodingContainerProtocol {179    typealias Key = K180    // MARK: Properties181    /// A reference to the encoder we're writing to.182    private let encoder: _PlistEncoder183    /// A reference to the container we're writing to.184    private let container: NSMutableDictionary185    /// The path of coding keys taken to get to this point in encoding.186    private(set) public var codingPath: [CodingKey]187    // MARK: - Initialization188    /// Initializes `self` with the given references.189    fileprivate init(referencing encoder: _PlistEncoder, codingPath: [CodingKey], wrapping container: NSMutableDictionary) {190        self.encoder = encoder191        self.codingPath = codingPath192        self.container = container193    }194    // MARK: - KeyedEncodingContainerProtocol Methods195    public mutating func encodeNil(forKey key: Key)               throws { self.container[key.stringValue] = _plistNullNSString }196    public mutating func encode(_ value: Bool, forKey key: Key)   throws { self.container[key.stringValue] = self.encoder.box(value) }197    public mutating func encode(_ value: Int, forKey key: Key)    throws { self.container[key.stringValue] = self.encoder.box(value) }198    public mutating func encode(_ value: Int8, forKey key: Key)   throws { self.container[key.stringValue] = self.encoder.box(value) }199    public mutating func encode(_ value: Int16, forKey key: Key)  throws { self.container[key.stringValue] = self.encoder.box(value) }200    public mutating func encode(_ value: Int32, forKey key: Key)  throws { self.container[key.stringValue] = self.encoder.box(value) }201    public mutating func encode(_ value: Int64, forKey key: Key)  throws { self.container[key.stringValue] = self.encoder.box(value) }202    public mutating func encode(_ value: UInt, forKey key: Key)   throws { self.container[key.stringValue] = self.encoder.box(value) }203    public mutating func encode(_ value: UInt8, forKey key: Key)  throws { self.container[key.stringValue] = self.encoder.box(value) }204    public mutating func encode(_ value: UInt16, forKey key: Key) throws { self.container[key.stringValue] = self.encoder.box(value) }205    public mutating func encode(_ value: UInt32, forKey key: Key) throws { self.container[key.stringValue] = self.encoder.box(value) }206    public mutating func encode(_ value: UInt64, forKey key: Key) throws { self.container[key.stringValue] = self.encoder.box(value) }207    public mutating func encode(_ value: String, forKey key: Key) throws { self.container[key.stringValue] = self.encoder.box(value) }208    public mutating func encode(_ value: Float, forKey key: Key)  throws { self.container[key.stringValue] = self.encoder.box(value) }209    public mutating func encode(_ value: Double, forKey key: Key) throws { self.container[key.stringValue] = self.encoder.box(value) }210    public mutating func encode<T : Encodable>(_ value: T, forKey key: Key) throws {211        self.encoder.codingPath.append(key)212        defer { self.encoder.codingPath.removeLast() }213        self.container[key.stringValue] = try self.encoder.box(value)214    }215    public mutating func nestedContainer<NestedKey>(keyedBy keyType: NestedKey.Type, forKey key: Key) -> KeyedEncodingContainer<NestedKey> {216        let dictionary = NSMutableDictionary()217        self.container[key.stringValue] = dictionary218        self.codingPath.append(key)219        defer { self.codingPath.removeLast() }220        let container = _PlistKeyedEncodingContainer<NestedKey>(referencing: self.encoder, codingPath: self.codingPath, wrapping: dictionary)221        return KeyedEncodingContainer(container)222    }223    public mutating func nestedUnkeyedContainer(forKey key: Key) -> UnkeyedEncodingContainer {224        let array = NSMutableArray()225        self.container[key.stringValue] = array226        self.codingPath.append(key)227        defer { self.codingPath.removeLast() }228        return _PlistUnkeyedEncodingContainer(referencing: self.encoder, codingPath: self.codingPath, wrapping: array)229    }230    public mutating func superEncoder() -> Encoder {231        return _PlistReferencingEncoder(referencing: self.encoder, at: _PlistKey.super, wrapping: self.container)232    }233    public mutating func superEncoder(forKey key: Key) -> Encoder {234        return _PlistReferencingEncoder(referencing: self.encoder, at: key, wrapping: self.container)235    }236}237fileprivate struct _PlistUnkeyedEncodingContainer : UnkeyedEncodingContainer {238    // MARK: Properties239    /// A reference to the encoder we're writing to.240    private let encoder: _PlistEncoder241    /// A reference to the container we're writing to.242    private let container: NSMutableArray243    /// The path of coding keys taken to get to this point in encoding.244    private(set) public var codingPath: [CodingKey]245    /// The number of elements encoded into the container.246    public var count: Int {247        return self.container.count248    }249    // MARK: - Initialization250    /// Initializes `self` with the given references.251    fileprivate init(referencing encoder: _PlistEncoder, codingPath: [CodingKey], wrapping container: NSMutableArray) {252        self.encoder = encoder253        self.codingPath = codingPath254        self.container = container255    }256    // MARK: - UnkeyedEncodingContainer Methods257    public mutating func encodeNil()             throws { self.container.add(_plistNullNSString) }258    public mutating func encode(_ value: Bool)   throws { self.container.add(self.encoder.box(value)) }259    public mutating func encode(_ value: Int)    throws { self.container.add(self.encoder.box(value)) }260    public mutating func encode(_ value: Int8)   throws { self.container.add(self.encoder.box(value)) }261    public mutating func encode(_ value: Int16)  throws { self.container.add(self.encoder.box(value)) }262    public mutating func encode(_ value: Int32)  throws { self.container.add(self.encoder.box(value)) }263    public mutating func encode(_ value: Int64)  throws { self.container.add(self.encoder.box(value)) }264    public mutating func encode(_ value: UInt)   throws { self.container.add(self.encoder.box(value)) }265    public mutating func encode(_ value: UInt8)  throws { self.container.add(self.encoder.box(value)) }266    public mutating func encode(_ value: UInt16) throws { self.container.add(self.encoder.box(value)) }267    public mutating func encode(_ value: UInt32) throws { self.container.add(self.encoder.box(value)) }268    public mutating func encode(_ value: UInt64) throws { self.container.add(self.encoder.box(value)) }269    public mutating func encode(_ value: Float)  throws { self.container.add(self.encoder.box(value)) }270    public mutating func encode(_ value: Double) throws { self.container.add(self.encoder.box(value)) }271    public mutating func encode(_ value: String) throws { self.container.add(self.encoder.box(value)) }272    public mutating func encode<T : Encodable>(_ value: T) throws {273        self.encoder.codingPath.append(_PlistKey(index: self.count))274        defer { self.encoder.codingPath.removeLast() }275        self.container.add(try self.encoder.box(value))276    }277    public mutating func nestedContainer<NestedKey>(keyedBy keyType: NestedKey.Type) -> KeyedEncodingContainer<NestedKey> {278        self.codingPath.append(_PlistKey(index: self.count))279        defer { self.codingPath.removeLast() }280        let dictionary = NSMutableDictionary()281        self.container.add(dictionary)282        let container = _PlistKeyedEncodingContainer<NestedKey>(referencing: self.encoder, codingPath: self.codingPath, wrapping: dictionary)283        return KeyedEncodingContainer(container)284    }285    public mutating func nestedUnkeyedContainer() -> UnkeyedEncodingContainer {286        self.codingPath.append(_PlistKey(index: self.count))287        defer { self.codingPath.removeLast() }288        let array = NSMutableArray()289        self.container.add(array)290        return _PlistUnkeyedEncodingContainer(referencing: self.encoder, codingPath: self.codingPath, wrapping: array)291    }292    public mutating func superEncoder() -> Encoder {293        return _PlistReferencingEncoder(referencing: self.encoder, at: self.container.count, wrapping: self.container)294    }295}296extension _PlistEncoder : SingleValueEncodingContainer {297    // MARK: - SingleValueEncodingContainer Methods298    private func assertCanEncodeNewValue() {299        precondition(self.canEncodeNewValue, "Attempt to encode value through single value container when previously value already encoded.")300    }301    public func encodeNil() throws {302        assertCanEncodeNewValue()303        self.storage.push(container: _plistNullNSString)304    }305    public func encode(_ value: Bool) throws {306        assertCanEncodeNewValue()307        self.storage.push(container: self.box(value))308    }309    public func encode(_ value: Int) throws {310        assertCanEncodeNewValue()311        self.storage.push(container: self.box(value))312    }313    public func encode(_ value: Int8) throws {314        assertCanEncodeNewValue()315        self.storage.push(container: self.box(value))316    }317    public func encode(_ value: Int16) throws {318        assertCanEncodeNewValue()319        self.storage.push(container: self.box(value))320    }321    public func encode(_ value: Int32) throws {322        assertCanEncodeNewValue()323        self.storage.push(container: self.box(value))324    }325    public func encode(_ value: Int64) throws {326        assertCanEncodeNewValue()327        self.storage.push(container: self.box(value))328    }329    public func encode(_ value: UInt) throws {330        assertCanEncodeNewValue()331        self.storage.push(container: self.box(value))332    }333    public func encode(_ value: UInt8) throws {334        assertCanEncodeNewValue()335        self.storage.push(container: self.box(value))336    }337    public func encode(_ value: UInt16) throws {338        assertCanEncodeNewValue()339        self.storage.push(container: self.box(value))340    }341    public func encode(_ value: UInt32) throws {342        assertCanEncodeNewValue()343        self.storage.push(container: self.box(value))344    }345    public func encode(_ value: UInt64) throws {346        assertCanEncodeNewValue()347        self.storage.push(container: self.box(value))348    }349    public func encode(_ value: String) throws {350        assertCanEncodeNewValue()351        self.storage.push(container: self.box(value))352    }353    public func encode(_ value: Float) throws {354        assertCanEncodeNewValue()355        self.storage.push(container: self.box(value))356    }357    public func encode(_ value: Double) throws {358        assertCanEncodeNewValue()359        self.storage.push(container: self.box(value))360    }361    public func encode<T : Encodable>(_ value: T) throws {362        assertCanEncodeNewValue()363        try self.storage.push(container: self.box(value))364    }365}366// MARK: - Concrete Value Representations367extension _PlistEncoder {368    /// Returns the given value boxed in a container appropriate for pushing onto the container stack.369    fileprivate func box(_ value: Bool)   -> NSObject { return NSNumber(value: value) }370    fileprivate func box(_ value: Int)    -> NSObject { return NSNumber(value: value) }371    fileprivate func box(_ value: Int8)   -> NSObject { return NSNumber(value: value) }372    fileprivate func box(_ value: Int16)  -> NSObject { return NSNumber(value: value) }373    fileprivate func box(_ value: Int32)  -> NSObject { return NSNumber(value: value) }374    fileprivate func box(_ value: Int64)  -> NSObject { return NSNumber(value: value) }375    fileprivate func box(_ value: UInt)   -> NSObject { return NSNumber(value: value) }376    fileprivate func box(_ value: UInt8)  -> NSObject { return NSNumber(value: value) }377    fileprivate func box(_ value: UInt16) -> NSObject { return NSNumber(value: value) }378    fileprivate func box(_ value: UInt32) -> NSObject { return NSNumber(value: value) }379    fileprivate func box(_ value: UInt64) -> NSObject { return NSNumber(value: value) }380    fileprivate func box(_ value: Float)  -> NSObject { return NSNumber(value: value) }381    fileprivate func box(_ value: Double) -> NSObject { return NSNumber(value: value) }382    fileprivate func box(_ value: String) -> NSObject { return NSString(string: value) }383    fileprivate func box<T : Encodable>(_ value: T) throws -> NSObject {384        return try self.box_(value) ?? NSDictionary()385    }386    fileprivate func box_<T : Encodable>(_ value: T) throws -> NSObject? {387        if T.self == Date.self || T.self == NSDate.self {388            // PropertyListSerialization handles NSDate directly.389            return (value as! NSDate)390        } else if T.self == Data.self || T.self == NSData.self {391            // PropertyListSerialization handles NSData directly.392            return (value as! NSData)393        }394        // The value should request a container from the _PlistEncoder.395        let depth = self.storage.count396        do {397            try value.encode(to: self)398        } catch let error {399            // If the value pushed a container before throwing, pop it back off to restore state.400            if self.storage.count > depth {401                let _ = self.storage.popContainer()402            }403            throw error404        }405        // The top container should be a new container.406        guard self.storage.count > depth else {407            return nil408        }409        return self.storage.popContainer()410    }411}412// MARK: - _PlistReferencingEncoder413/// _PlistReferencingEncoder is a special subclass of _PlistEncoder which has its own storage, but references the contents of a different encoder.414/// It's used in superEncoder(), which returns a new encoder for encoding a superclass -- the lifetime of the encoder should not escape the scope it's created in, but it doesn't necessarily know when it's done being used (to write to the original container).415fileprivate class _PlistReferencingEncoder : _PlistEncoder {416    // MARK: Reference types.417    /// The type of container we're referencing.418    private enum Reference {419        /// Referencing a specific index in an array container.420        case array(NSMutableArray, Int)421        /// Referencing a specific key in a dictionary container.422        case dictionary(NSMutableDictionary, String)423    }424    // MARK: - Properties425    /// The encoder we're referencing.426    private let encoder: _PlistEncoder427    /// The container reference itself.428    private let reference: Reference429    // MARK: - Initialization430    /// Initializes `self` by referencing the given array container in the given encoder.431    fileprivate init(referencing encoder: _PlistEncoder, at index: Int, wrapping array: NSMutableArray) {432        self.encoder = encoder433        self.reference = .array(array, index)434        super.init(options: encoder.options, codingPath: encoder.codingPath)435        self.codingPath.append(_PlistKey(index: index))436    }437    /// Initializes `self` by referencing the given dictionary container in the given encoder.438    fileprivate init(referencing encoder: _PlistEncoder, at key: CodingKey, wrapping dictionary: NSMutableDictionary) {439        self.encoder = encoder440        self.reference = .dictionary(dictionary, key.stringValue)441        super.init(options: encoder.options, codingPath: encoder.codingPath)442        self.codingPath.append(key)443    }444    // MARK: - Coding Path Operations445    fileprivate override var canEncodeNewValue: Bool {446        // With a regular encoder, the storage and coding path grow together.447        // A referencing encoder, however, inherits its parents coding path, as well as the key it was created for.448        // We have to take this into account.449        return self.storage.count == self.codingPath.count - self.encoder.codingPath.count - 1450    }451    // MARK: - Deinitialization452    // Finalizes `self` by writing the contents of our storage to the referenced encoder's storage.453    deinit {454        let value: Any455        switch self.storage.count {456        case 0: value = NSDictionary()457        case 1: value = self.storage.popContainer()458        default: fatalError("Referencing encoder deallocated with multiple containers on stack.")459        }460        switch self.reference {461        case .array(let array, let index):462            array.insert(value, at: index)463        case .dictionary(let dictionary, let key):464            dictionary[NSString(string: key)] = value465        }466    }467}468//===----------------------------------------------------------------------===//469// Plist Decoder470//===----------------------------------------------------------------------===//471/// `PropertyListDecoder` facilitates the decoding of property list values into semantic `Decodable` types.472open class PropertyListDecoder {473    // MARK: Options474    /// Contextual user-provided information for use during decoding.475    open var userInfo: [CodingUserInfoKey : Any] = [:]476    /// Options set on the top-level encoder to pass down the decoding hierarchy.477    fileprivate struct _Options {478        let userInfo: [CodingUserInfoKey : Any]479    }480    /// The options set on the top-level decoder.481    fileprivate var options: _Options {482        return _Options(userInfo: userInfo)483    }484    // MARK: - Constructing a Property List Decoder485    /// Initializes `self` with default strategies.486    public init() {}487    // MARK: - Decoding Values488    /// Decodes a top-level value of the given type from the given property list representation.489    ///490    /// - parameter type: The type of the value to decode.491    /// - parameter data: The data to decode from.492    /// - returns: A value of the requested type.493    /// - throws: `DecodingError.dataCorrupted` if values requested from the payload are corrupted, or if the given data is not a valid property list.494    /// - throws: An error if any value throws an error during decoding.495    open func decode<T : Decodable>(_ type: T.Type, from data: Data) throws -> T {496        var format: PropertyListSerialization.PropertyListFormat = .binary497        return try decode(type, from: data, format: &format)498    }499    /// Decodes a top-level value of the given type from the given property list representation.500    ///501    /// - parameter type: The type of the value to decode.502    /// - parameter data: The data to decode from.503    /// - parameter format: The parsed property list format.504    /// - returns: A value of the requested type along with the detected format of the property list.505    /// - throws: `DecodingError.dataCorrupted` if values requested from the payload are corrupted, or if the given data is not a valid property list.506    /// - throws: An error if any value throws an error during decoding.507    open func decode<T : Decodable>(_ type: T.Type, from data: Data, format: inout PropertyListSerialization.PropertyListFormat) throws -> T {508        let topLevel: Any509        do {510            topLevel = try PropertyListSerialization.propertyList(from: data, options: [], format: &format)511        } catch {512            throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: [], debugDescription: "The given data was not a valid property list.", underlyingError: error))513        }514        return try decode(type, fromTopLevel: topLevel)515    }516    /// Decodes a top-level value of the given type from the given property list container (top-level array or dictionary).517    ///518    /// - parameter type: The type of the value to decode.519    /// - parameter container: The top-level plist container.520    /// - returns: A value of the requested type.521    /// - throws: `DecodingError.dataCorrupted` if values requested from the payload are corrupted, or if the given data is not a valid property list.522    /// - throws: An error if any value throws an error during decoding.523    internal func decode<T : Decodable>(_ type: T.Type, fromTopLevel container: Any) throws -> T {524        let decoder = _PlistDecoder(referencing: container, options: self.options)525        guard let value = try decoder.unbox(container, as: type) else {526            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: [], debugDescription: "The given data did not contain a top-level value."))527        }528        return value529    }530}531// MARK: - _PlistDecoder532fileprivate class _PlistDecoder : Decoder {533    // MARK: Properties534    /// The decoder's storage.535    fileprivate var storage: _PlistDecodingStorage536    /// Options set on the top-level decoder.537    fileprivate let options: PropertyListDecoder._Options538    /// The path to the current point in encoding.539    fileprivate(set) public var codingPath: [CodingKey]540    /// Contextual user-provided information for use during encoding.541    public var userInfo: [CodingUserInfoKey : Any] {542        return self.options.userInfo543    }544    // MARK: - Initialization545    /// Initializes `self` with the given top-level container and options.546    fileprivate init(referencing container: Any, at codingPath: [CodingKey] = [], options: PropertyListDecoder._Options) {547        self.storage = _PlistDecodingStorage()548        self.storage.push(container: container)549        self.codingPath = codingPath550        self.options = options551    }552    // MARK: - Decoder Methods553    public func container<Key>(keyedBy type: Key.Type) throws -> KeyedDecodingContainer<Key> {554        guard !(self.storage.topContainer is NSNull) else {555            throw DecodingError.valueNotFound(KeyedDecodingContainer<Key>.self,556                                              DecodingError.Context(codingPath: self.codingPath,557                                                      debugDescription: "Cannot get keyed decoding container -- found null value instead."))558        }559        guard let topContainer = self.storage.topContainer as? [String : Any] else {560            throw DecodingError._typeMismatch(at: self.codingPath, expectation: [String : Any].self, reality: self.storage.topContainer)561        }562        let container = _PlistKeyedDecodingContainer<Key>(referencing: self, wrapping: topContainer)563        return KeyedDecodingContainer(container)564    }565    public func unkeyedContainer() throws -> UnkeyedDecodingContainer {566        guard !(self.storage.topContainer is NSNull) else {567            throw DecodingError.valueNotFound(UnkeyedDecodingContainer.self,568                                              DecodingError.Context(codingPath: self.codingPath,569                                                      debugDescription: "Cannot get unkeyed decoding container -- found null value instead."))570        }571        guard let topContainer = self.storage.topContainer as? [Any] else {572            throw DecodingError._typeMismatch(at: self.codingPath, expectation: [Any].self, reality: self.storage.topContainer)573        }574        return _PlistUnkeyedDecodingContainer(referencing: self, wrapping: topContainer)575    }576    public func singleValueContainer() throws -> SingleValueDecodingContainer {577        return self578    }579}580// MARK: - Decoding Storage581fileprivate struct _PlistDecodingStorage {582    // MARK: Properties583    /// The container stack.584    /// Elements may be any one of the plist types (NSNumber, Date, String, Array, [String : Any]).585    private(set) fileprivate var containers: [Any] = []586    // MARK: - Initialization587    /// Initializes `self` with no containers.588    fileprivate init() {}589    // MARK: - Modifying the Stack590    fileprivate var count: Int {...

Full Screen

Full Screen

singleValueContainer

Using AI Code Generation

copy

Full Screen

1import Foundation2""".data(using: .utf8)!3struct Person: Decodable {4}5let decoder = PropertyListDecoder()6let person = try decoder.decode(Person.self, from: plist)7print(person)8import Foundation9""".data(using: .utf8)!10struct Person: Decodable {11    init(from decoder: Decoder) throws {12        let container = try decoder.singleValueContainer()13        name = try container.decode(String.self)14    }15}16let decoder = PropertyListDecoder()17let person = try decoder.decode(Person.self, from: plist)18print(person)19import Foundation20""".data(using: .utf8)!21struct Person: Decodable {22    init(from decoder: Decoder) throws {23        let container = try decoder.singleValueContainer()24        if let name = try? container.decode(String.self) {25        } else {26        }27    }28}29let decoder = PropertyListDecoder()30let person = try decoder.decode(Person.self, from: plist)31print(person)32import Foundation33""".data(using: .utf8)!34struct Person: Decodable {35    init(from decoder: Decoder) throws

Full Screen

Full Screen

singleValueContainer

Using AI Code Generation

copy

Full Screen

1import Foundation2{3}4""".data(using: .utf8)!5let decoder = PropertyListDecoder()6let plist = try decoder.decode(Plist.self, from: plistData)7print(plist)8Plist(name: "John")9import Foundation10{11}12""".data(using: .utf8)!13let decoder = PropertyListDecoder()14let plist = try decoder.decode(Plist.self, from: plistData)15print(plist)16Plist(name: "John", age: 20)17import Foundation18{19    "address" : {20    }21}22""".data(using: .utf8)!23let decoder = PropertyListDecoder()24let plist = try decoder.decode(Plist.self, from: plistData)25print(plist)26Plist(name: "John", age: 20, address: Plist.Address(street: "1st street", city: "New York", country: "USA"))27import Foundation28{29    "address" : {30    },31        {32            "address" : {33            }34        },35        {36            "address" : {

Full Screen

Full Screen

singleValueContainer

Using AI Code Generation

copy

Full Screen

1struct SingleValueContainer: Decodable {2}3let singleValueContainer = try PropertyListDecoder().decode(SingleValueContainer.self, from: plistData)4print(singleValueContainer)5struct NestedContainer: Decodable {6}7let nestedContainer = try PropertyListDecoder().decode(NestedContainer.self, from: plistData)8print(nestedContainer)9struct NestedUnkeyedContainer: Decodable {10}11let nestedUnkeyedContainer = try PropertyListDecoder().decode(NestedUnkeyedContainer.self, from: plistData)12print(nestedUnkeyedContainer)13struct Container: Decodable {14}15let container = try PropertyListDecoder().decode(Container.self, from: plistData)16print(container)17struct SuperDecoder: Decodable {18}19let superDecoder = try PropertyListDecoder().decode(SuperDecoder.self, from: plistData)20print(superDecoder)21struct SuperDecoderKeyed: Decodable {22}23let superDecoderKeyed = try PropertyListDecoder().decode(SuperDecoderKeyed.self, from: plistData)24print(superDecoderKeyed)25struct SuperDecoderUnkeyed: Decodable {26}27let superDecoderUnkeyed = try PropertyListDecoder().decode(SuperDecoderUnkeyed.self

Full Screen

Full Screen

singleValueContainer

Using AI Code Generation

copy

Full Screen

1import Foundation2{3}4""".data(using: .utf8)!5let decoder = PropertyListDecoder()6let result = try! decoder.decode(Plist.self, from: plist)7print(result)8import Foundation9{10}11""".data(using: .utf8)!12let decoder = PropertyListDecoder()13let result = try! decoder.decode(Plist.self, from: plist)14print(result)15import Foundation16{17}18""".data(using: .utf8)!19let decoder = PropertyListDecoder()20let result = try! decoder.decode(Plist.self, from: plist)21print(result)22import Foundation23{24}25""".data(using: .utf8)!26let decoder = PropertyListDecoder()27let result = try! decoder.decode(Plist.self, from: plist)28print(result)29import Foundation30{31}32""".data(using: .utf8)!33let decoder = PropertyListDecoder()34let result = try! decoder.decode(Plist.self, from: plist)35print(result)36import Foundation37{38}39""".data(using: .utf8)!40let decoder = PropertyListDecoder()41let result = try! decoder.decode(Plist.self, from: plist)42print(result)43import Foundation44{45}46""".data(using: .utf8)!47let decoder = PropertyListDecoder()48let result = try! decoder.decode(Plist.self, from: plist)49print(result)

Full Screen

Full Screen

singleValueContainer

Using AI Code Generation

copy

Full Screen

1import Foundation2let plistDecoder = PropertyListDecoder()3let data = try Data(contentsOf: URL(fileURLWithPath: "1.plist"))4let string = try plistDecoder.decode(String.self, from: data)5print(string)6import Foundation7let plistDecoder = PropertyListDecoder()8let data = try Data(contentsOf: URL(fileURLWithPath: "2.plist"))9let string = try plistDecoder.decode(String.self, from: data)10print(string)11import Foundation12let plistDecoder = PropertyListDecoder()13let data = try Data(contentsOf: URL(fileURLWithPath: "3.plist"))14let string = try plistDecoder.decode(String.self, from: data)15print(string)16import Foundation17let plistDecoder = PropertyListDecoder()18let data = try Data(contentsOf: URL(fileURLWithPath: "4.plist"))19let string = try plistDecoder.decode(String.self, from: data)20print(string)21import Foundation22let plistDecoder = PropertyListDecoder()23let data = try Data(contentsOf: URL(fileURLWithPath: "5.plist"))24let string = try plistDecoder.decode(String.self, from: data)25print(string)26import Foundation27let plistDecoder = PropertyListDecoder()28let data = try Data(contentsOf: URL(fileURLWithPath: "6.plist"))29let string = try plistDecoder.decode(String.self, from: data)30print(string)31import Foundation32let plistDecoder = PropertyListDecoder()33let data = try Data(contentsOf: URL(fileURLWithPath: "7

Full Screen

Full Screen

singleValueContainer

Using AI Code Generation

copy

Full Screen

1import Foundation2let plistDecoder = _PlistDecoder()3let singleValueContainer = try plistDecoder.singleValueContainer()4let singleValue = try singleValueContainer.decode(Int.self)5print(singleValue)6import Foundation7let plistDecoder = _PlistDecoder()8let unkeyedContainer = try plistDecoder.unkeyedContainer()9var array = [Int]()10while !unkeyedContainer.isAtEnd {11    let value = try unkeyedContainer.decode(Int.self)12    array.append(value)13}14print(array)15import Foundation16let plistDecoder = _PlistDecoder()17let container = try plistDecoder.container(keyedBy: CodingKeys.self)18var dictionary = [String: Int]()19for key in container.allKeys {20    let value = try container.decode(Int.self, forKey: key)21}22print(dictionary)23import Foundation24struct Person: Decodable {25}26let plistDecoder = _PlistDecoder()27let person = try plistDecoder.decode(Person.self)28print(person)29import Foundation30struct Person: Decodable {31}32let plistDecoder = _PlistDecoder()33let person = try plistDecoder.decode(Person.self, fromKey: "person")34print(person)35import Foundation36struct Person: Decodable {37}38let plistDecoder = _PlistDecoder()39let person = try plistDecoder.decode(Person.self, fromKey: "person")40print(person)41import Foundation42struct Person: Decodable {

Full Screen

Full Screen

singleValueContainer

Using AI Code Generation

copy

Full Screen

1import Foundation2let plistPath = Bundle.main.path(forResource: "1", ofType: "plist")!3let plistData = FileManager.default.contents(atPath: plistPath)!4let decoder = PropertyListDecoder()5let plist = try! decoder.decode(_Plist.self, from: plistData)6let singleValueContainer = try! plist.singleValueContainer()7let singleValue = try! singleValueContainer.decode(String.self)8print(singleValue)9import Foundation10let plistPath = Bundle.main.path(forResource: "2", ofType: "plist")!11let plistData = FileManager.default.contents(atPath: plistPath)!12let decoder = PropertyListDecoder()13let plist = try! decoder.decode(_Plist.self, from: plistData)14let nestedContainer = try! plist.nestedContainer(keyedBy: _PlistKey.self, forKey: "nested")15let nestedValue = try! nestedContainer.decode(String.self, forKey: "nestedValue")16print(nestedValue)17import Foundation18let plistPath = Bundle.main.path(forResource: "3", ofType: "plist")!19let plistData = FileManager.default.contents(atPath: plistPath)!20let decoder = PropertyListDecoder()21let plist = try! decoder.decode(_Plist.self, from: plistData)22let nestedUnkeyedContainer = try! plist.nestedUnkeyedContainer(forKey: "nestedUnkeyed")23let nestedUnkeyedValue = try! nestedUnkeyedContainer.decode(String.self)24print(nestedUnkeyedValue)25import Foundation26let plistPath = Bundle.main.path(forResource: "

Full Screen

Full Screen

singleValueContainer

Using AI Code Generation

copy

Full Screen

1import Foundation2{3    "address": {4    }5}6""".data(using: .utf8)!7let decoder = PropertyListDecoder()8let person = try decoder.decode(Person.self, from: plist)9print(person)10import Foundation11{12    "address": {13    }14}15""".data(using: .utf8)!16let decoder = PropertyListDecoder()17let person = try decoder.decode(Person.self, from: plist)18print(person)19import Foundation20{21    "address": {22    }23}24""".data(using: .utf8)!25let decoder = PropertyListDecoder()26let person = try decoder.decode(Person.self, from: plist)27print(person)

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Swift-snapshot-testing automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in _PlistDecoder

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful