Курс #2 : PopularTableViewController : fatal error: Index out of range


#21

Пишите после

    print("Записи успешно получены из iCloud")

Какая ошибка? Вы ее не полностью скопировали.


#22

Все сделал, но теперь выдает только один результат и при обновлении дублируется тот же результат


#23

Видимо recordID не уникален. Попробуйте вместо recordID использовать то, что в ваших данных является уникальным, к примеру ID места (если такое есть).


#24

Похоже это глюк iCloud-а, потому что у меня вообще ситуации были что он дин тип записи отображает а другой нет


#25

Нет, айдишник видимо у всех будет один:

The ID of a new record is always set at initialization time.

сделайте так, если никаких уникальных данных нету

cloudPlaces = cloudPlaces.filterDuplicates { $0.object(forKey: "name") != $1.object(forKey: "name")}

#26

Всем огромное спасибо, что потратили на меня свое время и силы. Проблема как оказалась действительно была в настройках icloud. Я пошаманил и все наладилось. Я сделал оптимизацию индексов.


#27

Подскажите пожалуйста… Я хочу в контроллере в котором добавляются новые места в icloud в функции saveButtonPressed прописать чтобы при возврате в TableViewController в нем исполнялся метод getCloudRecords, чтобы новое место сразу добавилось. Возможно ли это сделать? Заранее спасибо!


#28

Или мне просто изменить тип сегвея, чтобы предыдущий контроллер отпускался и при возврате на него в нем срабатывали все методы заново?


#29

Так вызывайте getCloudRecords во viewWillAppear.


#30

К сожалению проблему я не устранил. Попробовал ваш последний метод но он пишет что знак неравенства туда не применим


#31

Я не очень разбираюсь, но может вы здесь поймете как нужно настроить индексирование.


#32

должен быть ==, я опечатался.


#33

Все равно ругается


#34

Попробуйте

cloudPlaces = cloudPlaces.filterDuplicates { $0.object(forKey: "name") as! String == $1.object(forKey: "name") as! String }

Что-то я на предыдущем скриншоте натупил, текст ошибки проглядел.


#35

Это шедеврально!! Все работает! Сколько мы напарились с этим глюком, спасибо огромное за помощь!!


#36

А как сделать так, чтобы при рефреше новосозданные рестораны кидал не в конец списка а в начало?


#37

Вставляйте их в начало массива

 array.insert(item, at: 0)

#38

А куда вставить эту строку? Чтобы вы правильно поняли конкретизирую, после того, как я сохранил новосозданный ресторан и делаю рефреш страницы он добавляется вниз. учитывая что рестораны сортируются по дате создания - самые новые вверху. только если приложение перезагрузить он станет вверх.


#39

А, ну так сортируйте ваш массив по дате создания (после того, как в него записались данные).


#40

Вы переоцениваете мои знания)) Я еще новичок. Подскажите пожалуйста какую строку нужно прописать для этого?