Лучший способ сохранить массив пользовательских объектов в Swift на iOS - PullRequest
0 голосов
/ 04 мая 2018

Мое текущее решение этой проблемы - создать класс, который реализует NSObject и NSCoder, и использовать его для кодирования и декодирования моих Array из Plant Objects (Plant состоит из двух strings и UIImage ). Кажется ненужным, что мне нужно создать class только для того, чтобы я мог использовать NSCoder для сохранения array. Есть ли лучший способ сделать это?

РЕДАКТИРОВАТЬ: Для ясности, plant class НЕ реализует NSCoder. Это просто NSObject. У меня есть отдельный class (singleton, если хотите), который я кодирую и декодирую, когда приложение закрывается и запускается. Это singleton, содержит мои Array из Plants.

РЕДАКТИРОВАТЬ: Завод класса

public class Plant: NSObject {
    private var name: String
    private var waterFrequency: Int
    private var date: Date
    private var img: UIImage
    private let dFormat = DateFormatter()

    public init(n: String, wF: Int) {
        self.name = n
        self.waterFrequency = wF
        self.date = Date();
        dFormat.dateFormat = "dd.MM.yyyy"
    }
}

Singleton

public class Singleton: NSCoder {
    private static var myPlantList: [Plant] {
        get {
            return myPlantList
        } set(pL) {
        self.myPlantList = pL
        }
    }

    private override init(pL: [Plant]){
        //init
    }

    required convenience init?(coder? aDecoder: NSCoder){
        //Decode
    }
}
...