GetStream ios обрабатывает ответ - PullRequest
0 голосов
/ 13 января 2020

Я вызываю метод, чтобы проверить, следует ли пользователь за указанным c фидом. Код, который я использую:

let feed = Client.shared.flatFeed(feedSlug: "public", userId: user.uid)
feed.following(filter: [FeedId(feedSlug: "public", userId: "7YZSZNpYOMU2GyRcxS1x152loPW2")], limit: 1) { result in
        print(result)
    }

Проблема в том, что я не смог получить «результат». И что я получаю в журнале:

Moya_Logger: [13/01/2020 11:08:34] Запрос: https://api.stream-io-api.com/api/v1.0/feed/public/55Crx1RIzGasE1p3E1RK8DpWlMm1/follows/?api_key=n9asnsfv92be&filter=public%3A7YZSZNpYOMU2GyRcxS1x152loPW2&limit=2&offset=0

Moya_Logger : [13/01/2020 11:08:34] Заголовки запросов: [ "авторизации": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNTVDcngxUkl6R2FzRTFwM0UxUks4RHBXbE1tMSJ9.C8gYvepNOr14qgnXRATA2exBCvNXgmD3pI51OyF_n7U", "X-Stream-Client": "поток-скор-клиент-2.0.0", " Stream-Auth-Type ":" jwt "] Moya_Logger: [13/01/2020 11:08:34] Метод HTTP-запроса: GET Moya_Logger: [13/01/2020 11:08:34] Ответ: {URL: https://api.stream-io-api.com/api/v1.0/feed/public/55Crx1RIzGasE1p3E1RK8DpWlMm1/follows/?api_key=n9asnsfv92be&filter=public%3A7YZSZNpYOMU2GyRcxS1x152loPW2&limit=2&offset=0} {Код состояния: 200, Заголовки {"Access-Control-Allow-Origin" = ("*"); "Cache-Control" = ("no-cache"); "Content-Encoding" = (gzip); «Длина содержимого» = (182); "Content-Type" = ("application / json; charset = utf-8"); Дата = («Пн, 13 января 2020 16:08:34 по Гринвичу»); Сервер = (nginx); "access-control-allow-headers" = ("x-request-with, тип контента, принять, источник, авторизация, x-csrftoken, x-stream-client, stream-auth-type"); "access-control-allow-method" = ("GET, POST, PUT, PATCH, DELETE, OPTIONS"); "access-control-max-age" = (86400); «x-ratelimit-limit» = (500); «x-ratelimit-Остаточный» = (499); «x-ratelimit-reset» = (1578931740); }} { "Результаты": [{ "FEED_ID": "* 1021 це *: 55Crx1RIzGasE1p3E1RK8DpWlMm1", "target_id": "* 1022 це *: 7YZSZNpYOMU2GyRcxS1x152loPW2", "created_at": "2019-12-20T20: 24: 59.359562691Z "," updated_at ":" 2019-12-20T20: 24: 59.359562691Z "}]," duration ":" 0,89 мс "}

Я могу понять, что запрос на получение через Мойю и Результат печатается в журнале. Итак, как я могу получить результат и обработать его из обратного вызова в функции feed.following? Спасибо

Ответы [ 2 ]

2 голосов
/ 14 января 2020

Если вы строго ссылаетесь на feed, оно не должно быть освобождено.

В этом случае self станет nil:

override func viewDidLoad() {
  super.viewDidLoad()
  let feed = Client.shared.flatFeed(feedSlug: "public", userId: user.uid)
  feed.following(filter: [FeedId(feedSlug: "public", userId: "7YZSZNpYOMU2GyRcxS1x152loPW2")], limit: 1) { result in
    print(result)
  }
}

Вместо этого вам нужно:

let feed = Client.shared.flatFeed(feedSlug: "public", userId: user.uid)
override func viewDidLoad() {
  super.viewDidLoad()
  feed.following(filter: [FeedId(feedSlug: "public", userId: "7YZSZNpYOMU2GyRcxS1x152loPW2")], limit: 1) { result in
    print(result)
  }
}

Надеюсь, это поможет

0 голосов
/ 13 января 2020

Я только что обнаружил, что «self» равно нулю в обратном обратном вызове в «Feed + Follow.swift».

return client.request(endpoint: FeedEndpoint.following(feedId,
                                                       filter: filter,
                                                       offset: offset,
                                                       limit: limit)) { [weak self] result in
                                                            if let self = self {
                                                                result.parse(self.callbackQueue, completion)
                                                            }
    }

Итак, я сделал добавление let tmp_self = self перед возвратом и в обратном вызове, Я бы использовал result.parse(tmp_self.callbackQueue, completion), чтобы избежать self - ноль.

На самом деле я понятия не имею, почему self становится нулем в обратном вызове, но это решило мою проблему.

...