Расширение протокола для структуры и перезаписи - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу иметь возможность декодировать разные объекты, которые приходят с сервера, с разными форматами даты, и для этого я разработал этот протокол:

public protocol DateFormatProtocol{
    var dateFormat : String {get}
}

public protocol CodableWithDateFormat : Codable, DateFormatProtocol{
    static var dateFormat: String {get}// = "DatFormat"
}

public extension CodableWithDateFormat{
    public static var dateFormat: String { return "Base date format" }
}

Поэтому, когда мне нужно, я могу переопределить свойствов каждой структуре, которая нуждается в различном формате даты, но я не хочу, чтобы каждая структура переопределяла формат даты по умолчанию, указанный в расширении протокола.Есть ли способ для меня, чтобы быть в состоянии написать это?:

struct Struct1 : CodableWithDateFormat{
    var dateFormat: String { return "Overwritten Date Format" }
    let prop1 : String
    let prop2 : Int
}

struct Struct2 : CodableWithDateFormat{ //Type 'Struct2' does not conform to protocol 'DateFormatProtocol'
    let prop1 : String
    let prop2 : Int
}

1 Ответ

0 голосов
/ 23 ноября 2018

Вы должны соответствовать декларации для dateFormat в DateFormatProtocol, как показано ниже,

public protocol DateFormatProtocol {
    static var dateFormat: String { get }
}

public protocol CodableWithDateFormat: Codable, DateFormatProtocol {}

public extension CodableWithDateFormat {
    public static var dateFormat: String { return "Base date format" }
}

struct Struct1: CodableWithDateFormat {
    public static var dateFormat: String { return "Overwritten Date Format" }
    let prop1: String
    let prop2: Int
}

struct Struct2: CodableWithDateFormat {
    let prop1: String
    let prop2: Int
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...