Почему return return не останавливает программу?

Поэтому у меня есть функция, которая проверяет, просматривает ли пользователь свой профиль или нет. и вот моя функция.

func isUserViewCurrentUser() -> Bool { guard let user = userDataDelegate?.userData() else { return false } if user == Current.user { print("returning false: USER IS CURRENT USER") return false } else { print("returning true: USER IS NOT CURRENT USER") return true } } 

Тогда я буду запускать только свою функцию в представлении, код должен остановиться после того, как я что-то напечатаю:

 override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(true) if isUserViewCurrentUser() == true { self.navigationItem.rightBarButtonItem = nil self.navigationItem.leftBarButtonItem = nil return } else { return } if let userID = userDataDelegate?.userData().userID { retrieveFollowerNumbers(userIdentifier: userID) return } } 

Но моя консоль печатала «возвращающ истину: ПОЛЬЗОВАТЕЛЬ НЕ ТОЛЬКО ПОЛЬЗОВАТЕЛЯ» для тысячи раз и никогда не останавливает. Я везде искал свой код, который никогда не запускал isUserViewCurrentUser() в цикле for или любом цикле.

Это моя userData:

 protocol SendUserDataDelegate { func userData() -> User } 

didSelect TableViewCell:

 if let user = filteredUsers?[indexPath.row] { userToPass = user profileController?.userDataDelegate = self self.navigationController?.pushViewController(profileController!, animated: true) } 

И этот код на моем cellRowAtIndexPath:

 if isUserViewCurrentUser() == true { cell.bioAndFollowStackView.addSubview(cell.followButtonOutlet) } else { if cell.followButtonOutlet != nil { cell.followButtonOutlet.removeFromSuperview() } } 

отправка пользовательского объекта, когда пользователь вставляет ячейку таблицы в другой viewController. и я вызываю его всякий раз, когда хочу получить ссылку на объект пользователя

Лично я вижу, что у вас есть 2 объекта с разными ссылками, и вы проверяете, равны ли они … даже если данные внутри одинаковы, фактические ссылки не являются.

Если это так, вы можете проверить их на что-то уникальное, как id.

if user.id == Current.user.id {}

Я не знаю, чего вы пытаетесь достичь, но по моему личному мнению (без обид) есть что-то вонючее … :). Вы можете думать о лучшем решении.

Надеюсь, это поможет, желаю вам всего наилучшего.

В viewWillAppear вы вызываете isUserViewCurrentUser() , который вызывает userDataDelegate.userData() . Вы не опубликовали то, что userData() , но я готов поспорить, что это снова заставляет ваше представление появляться снова или снова вызывает isUserViewCurrentUser() .

В любом случае, пожалуйста, напишите userData() код …

  • Смешение Swift и Objective C: Файл ProjectName-Swift.h не найден
  • Как повторно использовать раздел заголовка всей сцены?
  • CLLocationManager.requestLocation () занимает около 10 секунд
  • Позиция SkSpriteNode в универсальной игре
  • Как создать селектор с параметрами из строки
  • Анимация в UISearchController очень медленная в первый раз
  • Как добавить начальное дополнение для просмотра, добавленное внутри UIStackView
  • UITableView не отображает ячейки (используя быстрый)
  • Swift жалуется на «постороннюю метку аргумента»
  • Пример входа в систему cognito с помощью SWIFT & Facebook
  • Интерстициальная ошибка Swift Admob
  • Interesting Posts

    NSString заполнение / пробел между символами

    iOS 7 – сообщение, отправленное на освобожденный экземпляр 0x15d17cc0

    Как предотвратить совпадение макета с панелью состояния iOS

    Firebase не используется в расширениях приложений iOS начиная с версии 3.8.0 из-за GTMSessionFetcher sharedApplication #AskFirebase

    Проблема с использованием AsyncImageView в icarousel в iOS

    Каково надлежащее использование NSNotificationCenter с ReactiveCocoa 3 и Swift?

    Длительный конец рукоятки

    Автоматический отбор ячейки представления таблицы после появления подробного представления?

    Резюме всех соединений IBOutlet, IBAction в проекте?

    Быстрое нераспознанное селектор, отправленное на сегментный контроль экземпляра

    Сбой приложения сразу при запуске, только на устройстве

    Unwind Segue не работает в iOS 8

    Предоставление кода скидки для покупки iOS в приложении

    Является ли ABRecordID надежным способом идентификации уникальных контактов?

    Внедрение автоматического макета для представлений, сгенерированных программным способом

    Давайте будем гением компьютера.