PropertyListEncoder внутри Generic'а

swift

#1

Привет всем!
Может кто-нибудь сталкивался, или я что-то не то делаю - Неужели внутри дженерика нельзя использовать кодер/инкодер проперти листа!!!
Светит ошибку - “Generic parameter ‘Value’ could not be inferred”

class ZKeyValueRecordsStore where Key: Hashable, Value: Codable
{
    func encodeRecords() -> Data? {
        return
            try? PropertyListEncoder().encode(_records)
    }

    fileprivate var _records = [Key: Value]()
}

#2

Зачем вам дженерики?

class ZKeyValueRecordsStore {
    func encodeRecords() -> Data? {
        return try? PropertyListSerialization.data(fromPropertyList: _records, format: .xml, options: 0)
    }
    private var _records = [String: Any]()
}

#3

явная проблема языка, на лицо, и наглядно


#4

Прежде чем рассуждать о таком, неплохо бы знать синтаксис языка.

Это явно не на свифте написано.

Валидный код на свифте выглядел бы так:

class ZKeyValueRecordsStore<Key: Hashable & Codable, Value: Codable>{
    func encodeRecords() -> Data? {
        return try? PropertyListEncoder().encode(_records) 
    }
    fileprivate var _records = [Key: Value]()
}