Мое текущее решение этой проблемы - создать класс, который реализует 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
}
}