У меня есть сущность, у которой есть имя, и для целей тестирования я назвал их в порядке наиболее недавно добавленного (0) к самому старому добавленному объекту.
При первом запуске приложения оно загружает мои сущности в порядке(0,1,2 ...), но если я изменю атрибут имени любой сущности, порядок будет испорчен.Я использую функцию tableView numberOfRows, чтобы проверить это, так как он вызывается при перезагрузке tableView (исправьте меня, если я ошибаюсь):
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {return 0}
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "GraphDataSet")
do {
graphSetArray.removeAll()
graphSetArray = try managedContext.fetch(fetchRequest)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
for i in 0..<graphSetArray.count{
let set = graphSetArray[(graphSetArray.count-1)-i]
print("Name: ", set.value(forKeyPath: "name") as? String)
}
return graphSetArray.count
}
Насколько я понимаю, это очищает массив, содержащий все объекты (хотя я полагаю, что это бессмысленно, так как он устанавливается в следующей строке, но я хотел убедиться), затем выбирает объекты, заполняющие массив.Затем я перебираю массив в обратном направлении (от недавнего к старому), получаю объект этого индекса и печатаю его атрибут name.
Это вывод консоли каждый раз, когда я запускаю приложение:
Name: Optional("0")
Name: Optional("1")
Name: Optional("2")
Name: Optional("3")
Name: Optional("4")
Name: Optional("5")
Name: Optional("6")
Вот после того, как я изменил значение имени сущности на то же значение, которое было (только для поддержания его в порядке, но технически изменив значение и перезагрузив tableView):
Name: Optional("5")
Name: Optional("4")
Name: Optional("1")
Name: Optional("3")
Name: Optional("0")
Name: Optional("2")
Name: Optional("6")
Не знаю, почемуэто происходит потому, что я каждый раз получаю данные одинаково, и каждый раз, когда я перезагружаю приложение, порядок возвращается к нормальному.Моя единственная теория заключается в том, что когда атрибут сущности изменяется, порядок упорядочен без какого-либо паттерна.Поэтому мне интересно, верна ли эта теория, и если да, то есть ли способ остановить изменение порядка?
РЕДАКТИРОВАТЬ: Одна вещь, которую я только что заметил, что после того, как она выходит из строя, каждый разпосле этого, когда я изменяю значение, он сохраняет этот несортированный порядок