Size: a a a

2021 October 06

K

Kapitoshka438 in SwiftBook
import UIKit

protocol WorkerDelegate: AnyObject {
   
   
func workerDelegateDidGenerateValue(_ value: Int, after delay: Int)
   
}

class Worker {
   
   
weak var delegate: WorkerDelegate?
   
   
func generateValue() {
       
let delay = Int.random(in: 1...5)
       DispatchQueue.global().asyncAfter(deadline: .now() + .seconds(delay)) {
           
let value = Int.random(in: 0...10)
           
self.delegate?.workerDelegateDidGenerateValue(value, after: delay)
       }
   }
   
}

class ViewController: UIViewController, WorkerDelegate {
   
   
let worker = Worker()
   
   
override func viewDidLoad() {
       
super.viewDidLoad()
       worker.delegate =
self
       worker.generateValue()
   }
   
   
func workerDelegateDidGenerateValue(_ value: Int, after delay: Int) {
       print("Get \(value) after \(delay) seconds")
   }

}
источник

K

Kapitoshka438 in SwiftBook
Вот тебе пример, похожий на выполнение сетевого запроса на получение данных.
источник

D

Dmitry in SwiftBook
Я ж не говорю что этого делать нельзя и честно признаться есть более удобные инструменты , просто в контексте того о чем зашел разговор это вообще не применимо. А то что в эпловом в частности tableUIKitе ну могут себе позволить :)
источник

D

Dmitry in SwiftBook
По поводу этого сейчас вернусь к ноуту но не вижу проблемы вызывать UIviewController.worker.generateValue
источник

K

Kapitoshka438 in SwiftBook
Я уже не знаю, как заставить тебя понять, что нет цели запретить вызывать методы протокола напрямую. Ты можешь их вызвать, и это нормально. Но ты не можешь знать, когда их вызывать и с какими параметрами.
источник

D

Dmitry in SwiftBook
Ну не применима там делегация :) это о другом,
источник

K

Kapitoshka438 in SwiftBook
Где там?
источник

D

Dmitry in SwiftBook
Ну если у тебя есть инстанс внутри класса где тебе нужен делегат, он тебе там не нужен
источник

МК

Михаил Корт... in SwiftBook
Подскажите пожалуйста, можно ли в 3 кейсе как-то преобразовать i в Int и сравнить с диапазоном 1...9, что бы не писать все цифры в ковычках?
———————————————————————
import Foundation

let text = "Я изучаю свифт и сейчас я буду считать количество гласных, согласных и цифр. Мне 27 лет, а родился я 7 апреля 1994 года. Моей кошке 2 года, она ест от 2 до 4 раз в день, в общем 40г. корма."

var vowels = 0
var consonants = 0
var numbers = 0


for i in text.lowercased() {
   
   
switch i {
   
case "а", "о", "и", "е", "ё", "э", "ы", "у", "ю", "я" :
       vowels = vowels + 1
   
case "б", "в", "г", "д", "ж", "з", "й", "к", "л", "м", "н", "п", "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ" :
       consonants = consonants + 1
   
case "1", "2", "3", "4", "5", "6", "7", "8", "9" :
       numbers = numbers + 1
   
default:
       
break
   }
   
}
источник

K

Kapitoshka438 in SwiftBook
Мы с тобой разговариваем на разных языках.
источник

K

Kapitoshka438 in SwiftBook
Я тебе привёл два примера, где нужен делегат. И не важно, где находится инстанс переменной, которая содержит этот делегат.
источник

A

Andrew in SwiftBook
Ребята, к вас работа воще есть?)
источник

D

Dmitry in SwiftBook
Я тебе прекрасно решил без делегата, и по моему мнению если тебе нужнен делегат для внутренней проперти это или оверхед или проблема с архитектурой
источник

K

Kapitoshka438 in SwiftBook
С locatiomanager и с сетевым запросом ты не решил без делегата. В своей реализации можно обойтись и без них. Есть другие способы. Но речь изначально шла не об этом. Те, примеры, которые я приводил - это одни из стандартных и широко используемых решений. Поймёшь наверное со временем и практикой.
источник

D

Dmitry in SwiftBook
Ну вот на работу устроюсь сразу пойму)
источник

K

Kapitoshka438 in SwiftBook
Успехов тебе.
источник

D

Dmitry in SwiftBook
Спасибо, взаимно
источник

K

Kapitoshka438 in SwiftBook
Откажись здесь от switch. Используй isLetter и isNumber
источник

А

Алмаз ® in SwiftBook
Вы можете изначально попробовать преобразовать в число. И не проверять его в switch
источник

K

Kapitoshka438 in SwiftBook
Работа не волк. В лес не убежит.
источник