Size: a a a

iOS Developers — русскоговорящее сообщество

2021 March 13

A

Andrey in iOS Developers — русскоговорящее сообщество
Muhamed Niyazov
Ребят, как можно взять только первую строку в textview?
найти индекс элемента "\n" и забрать из текста все символы до него    - не,  для автопереноса не сработает
источник

MN

Muhamed Niyazov in iOS Developers — русскоговорящее сообщество
Andrey
найти индекс элемента "\n" и забрать из текста все символы до него    - не,  для автопереноса не сработает
Понял, спасибо
источник

L|

Lucky Hilo | luckyhi... in iOS Developers — русскоговорящее сообщество
but it is a supergroup
источник

T

Tik in iOS Developers — русскоговорящее сообщество
добрый день , метод parseData возвращает массив Cars а метод  Erik.visit() парсит дата и добавляет  ее к переменной Cars , но видимо метод Erik.visit() работает асинхронно и когда я вызываю функцию parseData то получаю пустой массив(метод Erik.visit правильно парсит я проверил) , есть ли какой то вариант пофиксить это?
источник

db

dj bosh in iOS Developers — русскоговорящее сообщество
Tik
добрый день , метод parseData возвращает массив Cars а метод  Erik.visit() парсит дата и добавляет  ее к переменной Cars , но видимо метод Erik.visit() работает асинхронно и когда я вызываю функцию parseData то получаю пустой массив(метод Erik.visit правильно парсит я проверил) , есть ли какой то вариант пофиксить это?
Самый простой способ - использовать DispatchGroup. Но тогда parseData нужно вызывать асинхронно из главного потока.

Перед visit открыть DispatchGroup. В конце замыкания отправляемого в visit покинуть DispatchGroup. А после вызова visit использовать метод DispatchGroup wait. Тогда функция parse будет ожидать выполнения замыкания функции visit
источник

db

dj bosh in iOS Developers — русскоговорящее сообщество
Методы которыми нужно пользоваться. Создать enter(), leave(), wait()
источник

db

dj bosh in iOS Developers — русскоговорящее сообщество
А так вообще нужно строить pyramid of doom если без доп средств с этим работать. Ну и врапперы писать свои
источник

T

Tik in iOS Developers — русскоговорящее сообщество
dj bosh
Самый простой способ - использовать DispatchGroup. Но тогда parseData нужно вызывать асинхронно из главного потока.

Перед visit открыть DispatchGroup. В конце замыкания отправляемого в visit покинуть DispatchGroup. А после вызова visit использовать метод DispatchGroup wait. Тогда функция parse будет ожидать выполнения замыкания функции visit
спасибо за идею , сейчас почитаю про DispatchGroup
источник

db

dj bosh in iOS Developers — русскоговорящее сообщество
Ну это не идея а решение на примитивном уровне. Не за что
источник

T

Tik in iOS Developers — русскоговорящее сообщество
dj bosh
А так вообще нужно строить pyramid of doom если без доп средств с этим работать. Ну и врапперы писать свои
вроде сделал так как ты сказал , но опять возвращает пустой массив
источник

T

Tik in iOS Developers — русскоговорящее сообщество
источник

СГ

Сергей Глеб... in iOS Developers — русскоговорящее сообщество
Enter не там
источник

T

Tik in iOS Developers — русскоговорящее сообщество
Сергей Глеб
Enter не там
а где?
источник

СГ

Сергей Глеб... in iOS Developers — русскоговорящее сообщество
Tik
а где?
Перед Эрик.визит
источник

A

Andrey in iOS Developers — русскоговорящее сообщество
а вопрос:
почему юзается group.wait?

а не:
group.notify(queue: .main) {
       
   }

почему фукнция mutating, если она никаких пропертей структуры не трогает?

вход в  группу должен быть перед запуском сетевого(?) запроса - не?
источник

A

Andrey in iOS Developers — русскоговорящее сообщество
да и юзать группы, как следует из названия, нужно там, где есть группы
а  тут один запрос
не  проще сделать ф-цию со сбегающим замыканием?
func parseData( _ complete: @escaping (_ :[Car])->() ){
   bla
   bla
   bla

 complete(Cars)
}
источник

T

Tik in iOS Developers — русскоговорящее сообщество
Andrey
да и юзать группы, как следует из названия, нужно там, где есть группы
а  тут один запрос
не  проще сделать ф-цию со сбегающим замыканием?
func parseData( _ complete: @escaping (_ :[Car])->() ){
   bla
   bla
   bla

 complete(Cars)
}
мне нужно что бы основной поток подождал до окончание парсинга ,при escaping не получу ли я обратное?
источник

A

Andrey in iOS Developers — русскоговорящее сообщество
Tik
мне нужно что бы основной поток подождал до окончание парсинга ,при escaping не получу ли я обратное?
ну, для того и делается escaping

её вызов будет выглядеть так:
parseData() { cars in
код тут выполнится после выполнения запроса
если нужно обновить интерфейс - ДиспатчКью.асинк {}
}
источник

T

Tik in iOS Developers — русскоговорящее сообщество
Andrey
ну, для того и делается escaping

её вызов будет выглядеть так:
parseData() { cars in
код тут выполнится после выполнения запроса
если нужно обновить интерфейс - ДиспатчКью.асинк {}
}
спасибо большое , я весь день замучился
источник

A

Andrey in iOS Developers — русскоговорящее сообщество
Tik
мне нужно что бы основной поток подождал до окончание парсинга ,при escaping не получу ли я обратное?
основной поток никого не ждёт
если ты останавливаешь мэйн поток для ожидания выполнения  сетевого запроса, то у тебя просто зависнет прилага в ожидании ответа

сетевой запрос уходит в своём потоке
получив данные, ты должен синхронизвать их с мэйн потоком
для этого и юзается DispatchQueue.async {}
источник