2017-07-18 23 views
13

Bawiłem się z Codable i czytania i pisania JSON zi do pliku. Teraz chciałbym napisać niestandardowy Coder, który może odczytywać i zapisywać pliki iOS .strings. Czy ktoś może mi w tym pomóc? Znalazłem protokołów Encoder i Decoder, ale nie mam pojęcia, co należy wdrożyć tutaj:Swift 4 niestandardowy koder i dekoder

class StringsEncoder {} 

extension StringsEncoder: Encoder { 
    var codingPath: [CodingKey?] { 
     return [] 
    } 

    var userInfo: [CodingUserInfoKey : Any] { 
     return [:] 
    } 

    func container<Key>(keyedBy type: Key.Type) -> KeyedEncodingContainer<Key> where Key : CodingKey { 

    } 

    func unkeyedContainer() -> UnkeyedEncodingContainer { 

    } 

    func singleValueContainer() -> SingleValueEncodingContainer { 

    } 
} 

extension StringsEncoder: Decoder { 
    func container<Key>(keyedBy type: Key.Type) throws -> KeyedDecodingContainer<Key> where Key : CodingKey { 

    } 

    func unkeyedContainer() throws -> UnkeyedDecodingContainer { 

    } 

    func singleValueContainer() throws -> SingleValueDecodingContainer { 

    } 
} 
+0

Czy zapoznałeś się z protokołami 'Codable' i co potrafią? Nie jestem pewien, czy format '.strings' jest odpowiedni dla tego - protokoły' Codable' muszą obsługiwać formaty ogólnego przeznaczenia, które mają tablice, słowniki, liczby, wartości puste, itp. '.trings' files don ' t obsługuje to wszystko ... To bardzo jednolity format. –

+0

Prawdopodobnie można, choć wydaje się nieco przesadzone dla formatu strun. Sprawdź na przykład źródło [JSONEncoder] (https://github.com/apple/swift/blob/master/stdlib/public/SDK/Foundation/JSONEncoder.swift), które jest dobrze udokumentowane. [szybki unboxed] (https://swiftunboxed.com/) będzie miał post podobny do tego, którego szukasz wkrótce myślę, że – nathan

+1

Wiem, że chcesz zrozumieć Codable, ale na off-szansę po prostu chcesz przeczytać i napisać do sprawdzania plików łańcuchowych 'String.propertyListFromStringsFileFormat()' oraz 'Dictionary.descriptionInStringsFileFormat' –

Odpowiedz

-2

Można pliki nie kod/dekodowania. Zamiast tego przeczytaj swoje pliki .strings w Dictionary.descriptionInStringsFileFormat i zakoduj ten słownik w standardowy sposób.