2015-12-12 3 views
0

У меня есть этот вариант использования, когда объект модели (например, пользователь класса) имеет несколько методов.Передача данных делегату в swift

Некоторые из методов в классе требуют аутентификации (например, getProfile, getFriends, ...).

class User{ 

      var loginDelegate:LoginDelegate 

      func getProfile{ 
       HTTPAsync.getProfile(payload){response in 
        if response.status == 401 { 
          login(delegate) 
         } 
       } 


      func getFriends{ 
       //similar code as above 
         login(delegate) 
      } 

После того, пользователь успешно вошли в систему, я хочу вызвать соответствующие функции (GetFriends, getProfile, в зависимости от того, вызываемые Логин).

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

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

ответ

0

В моем приложении используйте WhiteList для решения этой проблемы, например, Например, Url внутри интерфейса аутентификации пользователя, который содержит «/ users /» эту строку (или другие строки), когда пользователь не вошел в систему и использовал запрос для такого URL-адреса для отправки уведомления унифицированным классом для получения этого уведомления, затем всплывающее окно для входа в систему

0

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

Да, есть несколько способов решить эту проблему. е

  1. Определение методов получения на вашем протоколе делегата, если это не ваш собственный протокол делегата можно использовать extension расширить его функциональность.

  2. Создайте Enumeration как переменную экземпляра, чтобы вы могли установить значение перечисления с помощью метода входа, который ваши другие методы могут получить после завершения метода входа.

  3. Измените метод входа, чтобы принять больше параметров и возвращает значение \ object.

    Например:

    login(delegate: LoginDelegate, dictionaryOfOtherStuff: [String :AnyObject]?) -> (value_1: String, value_2 : [int])

Я могу только привести пример, так как вы не указано, что именно должно быть доступным после метода Логин называется.

Смежные вопросы