Хобрук: Ваш путь к мастерству в программировании

Меню indexpath сохранить UserDefaults swift

Я хочу сохранить тот индексный путь, который я последний раз щелкнул в меню. Он записывает indexpath прямо сейчас. Но если я выберу indexpath, он это запишет. Если я не выберу, то и не будет. Как я могу сохранить предыдущую запись, даже если я не выбираю элемент в меню?

let save11 = UserDefaults.standard.integer(forKey: "indexPath")

        let yenindex = save11        
        self.menuView.setSelected(index: yenindex)    
        let userDefaults = UserDefaults.standard
        userDefaults.removeObject(forKey: "indexPath")

  menuView.didSelectItemAtIndexHandler = {(indexPath: Int) -> Void in   
                var placesdeger: String = ""

      UserDefaults.standard.setValue(indexPath, forKey: "indexPath")

                if indexPath == 0 {
                    let userDefaults = UserDefaults.standard
                    userDefaults.removeObject(forKey: "indexPath")                    
   UserDefaults.standard.setValue(indexPath, forKey: "indexPath")
                    placesdeger = "Yatak Odası"

            }
                if indexPath == 1 {
                    let userDefaults = UserDefaults.standard
                    userDefaults.removeObject(forKey: "indexPath")

          UserDefaults.standard.setValue(indexPath, forKey: "indexPath")
                    placesdeger = "Oturma Odası"
                    self.refreshData()

                }
22.04.2019

  • Я думаю, вам просто нужно установить значение по умолчанию в пользовательских настройках главного экрана. 22.04.2019
  • Я не понимаю, как мне это сделать? @АбилашБансал 22.04.2019

Ответы:


1

всякий раз, когда вы нажимаете на меню, удаляйте предыдущее значение Userdefault и каждый раз устанавливайте новое значение пользователя по умолчанию. Поместите этот код и каждый раз получайте новый индекс, а если он не выбран, то старое значение вы получите в Userdefaults

       let userDefaults = UserDefaults.standard
       userDefaults.removeObject(forKey: "index")
       userDefaults.set(i, forKey: "index")

EDIT1 ИСПОЛЬЗУЙТЕ ЭТО ГДЕ ВЫ ОПРЕДЕЛЯЕТЕ CONSTANT ТОЛЬКО ОДИН РАЗ

let userDefaults = UserDefaults.standard

Если вы используете или какой-либо другой метод, я не знаю, но если вы получите правильный индексный путь, тогда этот код будет работать

menuView.didSelectItemAtIndexHandler = {(indexPath: Int) -> Void in   
                var placesdeger: String = ""
 userDefaults.removeObject(forKey: "indexPath")

                if indexPath == 0 {
                    let userDefaults = UserDefaults.standard

   UserDefaults.standard.setValue(indexPath, forKey: "indexPath")
                    placesdeger = "Yatak Odası"

            }
                if indexPath == 1 {



          UserDefaults.standard.setValue(indexPath, forKey: "indexPath")
                    placesdeger = "Oturma Odası"
                    self.refreshData()

                }
22.04.2019
  • let userDefaults = UserDefaults.standard userDefaults.removeObject(forKey: i) let save11 = UserDefaults.standard.integer(forKey: i) let yenindex = save11 self.menuView.setSelected(index: yenindex) menuView.didSelectItemAtIndexHandler = {(indexPath: Int ) -> Пустота в UserDefaults.standard.setValue(indexPath, forKey: i) if indexPath == 0 { UserDefaults.standard.setValue(indexPath, forKey: i) } // Сделал в форме, но не работает. 22.04.2019
  • удалить значение пользователя по умолчанию в didSelectItemAtIndexHandler перед условием if 22.04.2019
  • Я изменил код по теме, как вы сказали. Это все еще не работает. Когда я не выбираю предмет, он не записывает. 22.04.2019
  • Я редактирую ваш код в своем ответе, пожалуйста, проверьте @stakabekor 22.04.2019
  • Когда я не выбираю какой-либо пункт из меню, он снова не записывает. 22.04.2019
  • Это означает, что userDefaults.removeObject(forKey: indexPath) эта строка кода вызывается, отлаживает и проверяет, когда она вызывается в вашем коде. 22.04.2019
  • Индекс сохраняется, когда он выбран, но индекс не сохраняется, когда он не выбран. К сожалению, нет Github. 22.04.2019
  • после сохранения в userdefault он останется в вашем приложении, пока вы не удалите его самостоятельно или не удалите приложение. 22.04.2019
  • Хорошо, но когда indexPath не выбран, userdefaults не сохраняет ранее зарегистрированный indexpath. 22.04.2019
  • Это то, что я пытаюсь вам сказать, Userdefault сохраняет данные до тех пор, пока приложение не будет удалено или вы его не удалите. Отладьте свой код, вы обязательно получите проблему или поделитесь своим кодом, если это возможно, на Git. Прочитать документ о пользовательских настройках по умолчанию 22.04.2019
  • Или вы можете сохранить indexpath в статической переменной, это также сработает. 22.04.2019
  • Новые материалы

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

    Что в лицо
    Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

    Почему шаблоны проектирования и почему нет?
    Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

    Создание дизайна обуви с помощью машинного обучения
    Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

    GraalVM в 2022 году: итоги года
    2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..