Может быть, это поможет. Проблема конкретно в предложении «Приложение проверит количество элементов (всего 15 (элементы 1-13, плюс элементы 15 и 16)), а затем попытается сохранить элемент 17 как элемент 16.» У вас есть две цели в игре. Одним из них является подсчет количества предметов. Второе - решить, каким должен быть идентификатор нового элемента. Прямо сейчас вы заявляете, что устанавливаете идентификатор нового элемента на основе количества существующих элементов плюс один.
Вы можете изменить свое мнение об этом, распознав две цели и разделив их. Во-первых, вы можете сохранить функцию подсчета предметов, но осознайте, что ее единственная цель - подсчитать вещи. Во-вторых, вы можете использовать другую стратегию для установки идентификатора нового предмета.
Для вас доступно множество стратегий. Один из них: число, которое только увеличивается. Каждый раз, когда предмет добавляется, он увеличивается. Когда элемент удаляется, это число не уменьшается. Это число не является числом элементов, это просто непрерывно увеличивающееся число.
Сохраняет текущее значение этого непрерывно увеличивающегося числа в локальном хранилище.
При создании нового элемента увеличивается число, используйте увеличенное число в качестве идентификатора нового элемента, а затем также обновите новое значение числа в локальном хранилище.
Тогда единственное, о чем вам когда-либо придется беспокоиться, это о том, является ли он в течение жизни вашей программы на самом деле создаст 2 миллиарда элементов, и число будет настолько велико, насколько это возможно, до такой степени, что вы не сможете больше добавить 1 к нему. Вероятно, вряд ли.