День добрый!
Нахожусь в самом начале пути разработчика-свифтера, встала задача на стажировке: сохранить порядок CollectionView ячеек после закрытия приложения. Ячейки можно перетаскивать по длинному нажатию.
Вопрос: как сохранить порядок элементов в массиве, что лучше использовать? Код большой и чужой, пока мне сложно в нем ориентироваться. Должен ли я сохранять позиции при отрисовке ячеек или это происходит где-то в другом месте?
Мне намекнули, что рыться нужно где-то здесь:
func setDefaultSettings() {
// get settings from setting.plist
if let path = Bundle.main.path(forResource: "Settings", ofType: "plist") {
let settings = NSDictionary(contentsOfFile: path) as! Dictionary<String, Array<Dictionary<String, String>>> // [String: [[String: String]]]
// insert to DB
let context = dataManager.persistentContainer.viewContext
for obj in settings["activities"]! {
let activity = NSEntityDescription.insertNewObject(forEntityName: "Activity",
into: context) as! Activity
activity.title = obj["title"]
activity.image = UIImagePNGRepresentation(UIImage(named: obj["image"]!)!) as NSData?
activity.indicatorTypes = [.speed, .distance, .speedAvarage, .timeStart, .time]
activity.indicatorMapTypes = [.speed, .distance, .timeStart]
let activityType = ActivityType(rawValue: obj["type"]!)!
activity.typeValue = activityType
if activityType == .walk { // default type
activity.isActive = true
}
}
for obj in settings["indicators"]! {
let indicator = NSEntityDescription.insertNewObject(forEntityName: "Indicator",
into: context) as! Indicator
indicator.title = obj["title"]
indicator.image = UIImagePNGRepresentation(UIImage(named: obj["image"]!)!) as NSData?
indicator.typeValue = Indicator.IndicatorType(rawValue: obj["type"]!)!
}
dataManager.saveContext()
}
}
Вот так выглядит plist