GetStream / stream-swift

Swift client for Stream API
https://getstream.io
BSD 3-Clause "New" or "Revised" License
35 stars 26 forks source link

Example code does not compile #34

Open serenitus opened 3 years ago

serenitus commented 3 years ago

What did you do?

Copied example code from: https://getstream.github.io/stream-swift/Protocols/CollectionObjectProtocol.html

    final class Food: CollectionObject {
        private enum CodingKeys: String, CodingKey {
            case name
        }

        var name: String

        init(name: String, id: String? = nil) {
            self.name = name
            super.init(collectionName: "food", id: id)
        }

        required init(from decoder: Decoder) throws {
            let dataContainer = try decoder.container(keyedBy: DataCodingKeys.self)
            let container = try dataContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: .data)
            name = try container.decode(String.self, forKey: .name)
            try super.init(from: decoder)
        }

        override func encode(to encoder: Encoder) throws {
            var dataContainer = encoder.container(keyedBy: DataCodingKeys.self)
            var container = dataContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: .data)
            try container.encode(name, forKey: .name)
            try super.encode(to: encoder)
        }
    }

What did you expect to happen?

Expected the code to compile at least.

What happened instead?

Got an error: 'required' initializer 'init(collectionName:id:)' must be provided by subclass of 'CollectionObject'

GetStream Environment

GetStream version:

2.2.4

Xcode version:

12.4

Swift version:

5

Platform(s) running GetStream:

iOS

macOS version running Xcode:

Big Sur