Swift Notes
33 subscribers
22 photos
3 videos
1 file
23 links
Обучающие материалы и полезные заметки по языку программирования Swift. Изначально задумывался, как моя личная записная книжка в процессе обучения. Связаться со мной @clockber
Download Telegram
Жизненный цикл ViewController'a #ViewController

viewDidLoad()
viewWillAppear(_ animated: Bool)
viewDidAppear(_ animated: Bool)
viewWillDisappear(_ animated: Bool)
viewDidDisappear(_ animated: Bool)
Функции высшего порядка (Higher-Order functions) #functions

🔹 определяются как функции, принимающие другую функцию как аргумент или возвращающие функцию.

🔹 их много: map , filter , reduce , forEach , flatMap , compactMap ,sorted и т.д. Наиболее распространенными примерами функций высшего порядка являются функции map , filter и reduce.
Функции высшего порядка (Higher-Order functions) #functions
map, reduce, sorted, filter

🔹 Map: для преобразования содержимого массивов, map(_:)

//пример
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

func timesTen(_ x:Int) -> Int {
return x * 10
}

let result = numbers.map (timesTen)

print(numbers) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(result) //[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

🔹 Reduce: перебирает каждый элемент в коллекции и сводит их к одному значению, reduce (_:, _:)

//пример

let values = [3, 4, 5]
let sum = values.reduce(0, +)
print(sum)

//вывод: 12

🔹Sorted: сортировка массивов, основана на заданном вами замыкании, sorted(by:)

//пример (сортировка по алфавиту)

let avatarMovie = Movie(name: "Avatar")
let titanicMovie = Movie(name: "Titanic")
let piranhaMovie = Movie(name: "Piranha II: The Spawning")

let movies = [avatarMovie, titanicMovie, piranhaMovie]
let sortedMovies = movies.sorted(by: { $0 < $1 })

print(sortedMovies)

// вывод: [Avatar, Piranha II: The Spawning, Titanic]

🔹Filter: преобразует массив в соответствии с заданным условием, filter (_:)

//пример

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let filted = numbers.filter{$0 % 2 == 0}
//[2, 4, 6, 8, 10]
30 days of Swift -  все заметки стараюсь делать с максимальной пользой, наткнулся на обалденый репозиторий в Git, там парнишка разместил 30 различных проектов на Swift начального уровня.

🔹Если в лом залезать в папочки и смотреть код, то там даже GIFки есть с отображением функционала :)) https://github.com/allenwong/30DaysofSwift
Цикл For в Swift
Цикл for базовый метод во всех языка, в swift часто называют for-in

🔹for-in для массива #collections #array
В примере итерация по массиву городов #array, в Swift массивы так же известны под таким понятием как коллекции #collections

let cities = ["Amsterdam", "New York", "San Francisco"]
for city in cities {
print(city)
}

вывод: // Amsterdam
// New York
// San Francisco

🔹for-in для словаря #dictionary
Пример итерации словаря. Выводим возраст

let ages = ["Antoine": 28, "Jaap": 2, "Jack": 72]
for (name, age) in ages {
print("\(name) is \(age) years old")
}

вывод: // Antoine is 28 years old
// Jaap is 2 years old
// Jack is 72 years old

🔹for-in для словаря последовательностей #range
В следующем примере берем #range и выполняем оператор печати 4 раза. Счет идет в обратном порядке, потому что мы его добавили .reversed, это также может использоваться в других циклах.

for index in (0...3).reversed() {
print("\(index)..")
}

/// 3..
/// 2..
/// 1..
/// 0..
Optionals (опционалы) #optionals — это удобный механизм обработки ситуаций, когда значение переменной может отсутствовать. Значение будет использовано, только если оно есть.

p.s: самое мое любимое,когда коротко и ясно :)
Вопросы с собеседований
🔹 Explain the common execution states for iOS App

1.Non-running - The app is not running.
2.Inactive - The app is running in the foreground, but not receiving events. An iOS app can be placed into an inactive state, for example, when a call or SMS message is received.
3. Active - The app is running in the foreground, and receiving events.
4. Background - The app is running in the background, and executing code.
5. Suspended(Приостановленный) - The app is in the background, but no code is being executed.
Топ 5 iOS библиотек, которые должны знать разработчики
🔹полное описание по ссылке

1. AFNetworking
2. JSONModel
3. MagicalRecord
4. SDWebImage
5. ReactiveCocoa
Приведение типов

🔹Способы привести значения к другому типу.
Дорогие и уважаемые, как лучше выкладывать примеры с кодом, скринами или текстом?
Anonymous Poll
61%
Скрин
22%
Текст
17%
Без разницы 😑
let oneMillion = 1_000_000
let oneThousand = oneMillion / 0_1_0_0_0
print(oneThousand)

🔹как думаете какой будет результат?
//Ответ: 1000
Optional bidding
🔹 упрощаем выражение c опционалами #optionals
#optionals

🔹 еще один вариант работы с опционалами, размещаем дефолтное значение после символов ?? и если в переменной будет nil, получим Unknown, если не nil, то значение, как на скрине.
🔹 Пример использования #forin циклов, в первом кейсе ищем четные числа, во втором при помощи continue ищем нечетные в массиве numbers.
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 Пример создания #typealias с типом String.
Данная декларация позволяет нам использовать Student вместо String, что дает нам возможность создавать студентиков в более читабельном виде.
https://learngitbranching.js.org/?locale=ru_RU

🔹 Игра-приложение создано, чтобы помочь новичкам постичь мощные возможности ветвления и работы с git
Делюсь интересной подборкой материалов Кирилла Дутова
"Как стать iOS разработчиком в 2022 году"
🔹 курсы, книги, пошаговый план. В общем все сливки в одной презенташке.

https://drive.google.com/file/d/1GNcqV8NOlkH2d-x7Z8KXGfR35wGJzOH1/view
Вчера начал полистывать "Грокаем алгоритмы" Адитья Бхаргава.
Решил рассматривыемые там примерчики переводить, с используемого в книге Phyton, на Swift.

🔹 Пример первый. Бинарный поиск (в массиве конечно:)
На входе функция принимает массив и число которое мы ищем, в результате получаем индекс искомого числа в массиве.

p.s Добавлю соответсвующий раздельчик в закреп.
http://iosfonts.com/

🔹 Сайт на котором представлены все шрифты доступные в iOS.