Знакомьтесь, Swift! / Хабр
2 июня на конференции WWDC 2014 Apple представила новый объектно-ориентированный язык программирования — Swift. Я думаю, многие уже успели посмотреть, что из себя представляет этот язык (Swift — нововведения), поэтому я не буду останавливаться на нововведениях. Я предлагаю создать простенький проект на языке Swift, чтобы понять на деле основные отличия от привычного Obj-C.
Подготовка
Для начала необходимо установить Xcode 6 Beta. Скачать его можно отсюда:
https://developer.apple.com/devcenter/ios/index.action
Скачиваем, устанавливаем и открываем (проблем с установкой не должно возникнуть, beta версия ставится как отдельное приложение и на основной Xcode никак не влияет).
Создаем новый проект (Single View Application) -> вводим название проекта и не забываем выбрать язык Swift!
Структура
Обратите внимание на структуру, количество файлов теперь в 2 раза меньше, теперь нет необходимости в заголовочных файлах. Код, написанный в глобальной области используется в качестве точки входа для программы, так что больше не нужна функция main.
Вот как выглядит теперь AppDelegate:
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { // Override point for customization after application launch. return true } func applicationWillResignActive(application: UIApplication) { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.} func applicationDidEnterBackground(application: UIApplication) { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } func applicationWillEnterForeground(application: UIApplication) { // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. } func applicationDidBecomeActive(application: UIApplication) { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } func applicationWillTerminate(application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } }
Hello World
Изучение любого языка начинается с Hello World. Не станем нарушать традицию. Откройте AppDelegate.swift и добавьте в func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool
строку:
println("Hello World") //Выводит в консоль
Запустите программу и вы увидите в консоли заветный Hello World. Вот так все просто.
Усложним
Немного усложним проект. Добавим любимый TableView.
Открываем Main.storyboard. Кстати, обратите внимание что для универсального приложения теперь по умолчанию создается не два storyboard, как было раньше, а всего лишь один. Количество симуляторов тоже увеличилось:
Находим в Object Library заветный Table View и переносим его на экран приложения. Растягиваем таблицу, чтобы она была на весь экран (необходимо, чтобы она совпадала с краями).
Дальше все делается как и раньше, нам нужно задать для таблицы dataSource и delegate. Для этого открываем Connection Inspector, от delegate тянем к объекту ViewController и аналогично для dataSource.
Во ViewController.swift нужно указать протоколы, которые нам понадобятся: UITableViewDataSource и UITableViewDelegate
Теперь это можно сделать так:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
Компилятор сразу ругнется:
Type ‘ViewController’ does not conform to protocol ‘UITableViewDataSource’
Компилятор сообщает нам, что мы не определили функции протокола
. Чтобы посмотреть какие функции нужно определить, зажмите command + кликните по протоколу.
protocol UITableViewDataSource : NSObjectProtocol { func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
Вот эти две функции и необходимо добавить в наш ViewController. swift
Первая функция должна возвращать количество строк в таблице (Int):
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int { return 20 }
А вторая функция возвращает ячейку таблицы:
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MyTestSwiftCell") cell.text = "Habrapost \(indexPath.row)" cell.detailTextLabel.text = "Hi, \(indexPath.row)" return cell }
В первой строчке создаем ячейку. Разберем запись подробней:
let означает, что мы создаем константу, а не переменную.
let cell: UITableViewCell сообщаем, что тип этой константы будет UITableViewCell. По идее, необязательно сообщать какой тип будет у константы или переменной. Программа будет прекрасно работать и так:
let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MyTestSwiftCell")
Но как мне кажется, лучше все-таки сообщать, Apple дает хороший пример почему:
let implicitInteger = 70 let implicitDouble = 70.0 let explicitDouble: Double = 70
Напомню, как мы создавали ячейку в Obj-C:
UITableCell *cell =[[UITableCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyTestSwiftCell"]
Не нужен больше alloc, Swift все делает самостоятельно. Все методы, которые начинались с init были убраны, и теперь инициализация происходит в стиле Swift (т.е MyClass()). Причем инициализаторы с with тоже были преобразованы, то что шло после with — стало первым аргументом в инициализаторе Swift.
Вот эта запись мне особенно сильно понравилась:
cell.text = "Habrapost \(indexPath. row)"
В Obj-C, чтобы сделать простую операцию конкатенацию строк, нужно было изгаляться следующим образом:
cell.text = [NSString stringWithFormat:@"Habrapost %@", indexPath.row];
По мне, так это приятное изменение.
Скажем теперь мы захотели изменить цвет текста на стандартный фиолетовый. Сделать это можно аналогично тому как было в Obj-C, обратимся к методу класса
cell.detailTextLabel.textColor = UIColor.purpleColor()
В итоге, получаем
Немного о playground
Playground — это площадка, где можно поэкспериментировать, и если понравиться перенести в основной проект.
Для того, чтобы создать playgroung выберете File->New->File:
Вот и все, можно экспериментировать. Например, я добавила ячейку таблицы, чтобы увидеть как она будет выглядеть.
Подробней почитать можно здесь https://developer.
Заключение
На первый взгляд, мне язык понравился. Довольно легко будет перейти от Obj-C на Swift, к тому же Swift прекрасно уживается с Obj-C. Количество кода уменьшилось в разы, читаемость при этом увеличилась. С памятью теперь вообще возиться не надо, все это делает Swift.
Подробнее про Swift: The Swift Programming Language
iOS программирование на Swift в примерах
By admin Опубликовано Опубликовано в Без категории 4 комментария
Задача Итак, наша задача создать iOS приложение, в среде разработки Xcode, в котором будет всплывающее окно —Pop Up View, при этом все что сзади этого окна будет затемняться. Подобный прием использован во многих приложениях, но я не смог найти информацию …
Pop Up View пример Read more »
By admin Опубликовано Опубликовано в Iron ribbon, Работа с сетью, Уроки 14 комментариев Tagged with alamofire, Swift 4
Пример использования библиотеки Alamofire Задача: создать iOS приложение в среде разработки Xcode 9 на языке программирования Swift 4, которое посылает HTTP запрос, а в ответ получает данные, которые обрабатывает и отображает в виде таблицы. После разработки у нас получится такое …
Alamofire на примере Read more »
By admin Опубликовано Опубликовано в LLDB Комментариев нет Tagged with LLDB
Пример и памятка по основным командам LLDB для работы с breakpoint — точками останова.
By admin Опубликовано Опубликовано в LLDB Комментариев нет
Основные команды Terminal и начало работы в LLDB
By admin Опубликовано Опубликовано в Iron ribbon Комментариев нет Tagged with Log, Memory
Если в процессе разработки iOS приложения или любого другого приложения потребуется выяснить какое количество памяти используется в данный момент, то можно использовать следующую функцию: // // proSwift. ru // func report_memory() { var info = mach_task_basic_info() var count = mach_msg_type_number_t(MemoryLayout<mach_task_basic_info>.size)/4 let …
Вывод в консоль размера используемой памяти iOS Swift Read more »
By admin Опубликовано Опубликовано в Iron ribbon Комментариев нет Tagged with Formatter
Без долгих вступлений и СЕО-якорей — сразу к делу. Для того чтобы добавить разделитель триад к любым числовым значениям нужно написать два расширения — одно для класса Formatter, а второе для числового типа, например Int или UInt32.
By admin Опубликовано Опубликовано в Памятка Комментариев нет Tagged with Памятка для перечитывания
Шаблон autoreleasepool используется в Swift при возврате объектов autorelease (созданных либо вашим кодом Objective-C, либо использованием классов Cocoa). autorelease в Swift функционирует так же, как в Objective-C. Для примера можно рассмотреть метод создания объектов NSImage / UIImage: // // proSwift.ru …
Память и autoreleasepool для циклов Read more »
By admin Опубликовано Опубликовано в Без категории 1 комментарий
Зачем все это нужно? Обработка ошибок во время выполнения программы и самое главное — реакция приложения на эти ошибки — это хорошая практика для любого программного продукта. Согласитесь, если вы пользуетесь приложением и в какой-то момент оно без каких либо …
Обработка ошибок в Swift Read more »
By admin Опубликовано Опубликовано в Iron ribbon, Фундаментальные основы Комментариев нет Tagged with Swift 3
Тернарный условный оператор Проверку на выполнение условий можно записать со помощью условного оператора if else // // proSwift.ru // // Swift 3 if batteryLow { replaceBattery() } else { plugAndPlay() } Тут все просто — если батарейки сели — нужно …
Тернарный условный оператор и оператор ?? Read more »
By admin Опубликовано Опубликовано в Реальные примеры, Уроки, Фундаментальные основы 8 комментариев Tagged with Swift 3, URL-Scheme
Думаю, все разработчики мобильных iOS приложений в курсе, что из собственного приложения можно запускать сторонние приложения. Например можно запустить клиент Youtube, кликнув на ссылку на видео, или вызвать почтовый клиент если нажать на кнопку «написать письмо». В конце концов — …
URL Schemes или как передать данные между iOS приложениями Read more »
Примеры кода— Блог разработчиков Swift
Чтобы получать бесплатных еженедельных видеоуроков по разработке мобильных приложений с помощью языка программирования Swift, подпишитесь на этот блог. И да :), добавить в закладки и поделиться этой страницей со своими друзьями потому что новые фрагменты кода Swift добавляются каждый день. Подписывайтесь, будем на связи!
Если вас интересуют видеоуроков о том, как писать модульные тесты и тесты пользовательского интерфейса для тестирования вашего мобильного приложения Swift, посетите эту страницу: Модульное тестирование мобильного приложения Swift
Классы в Swift
- Объявить класс
- Реализовать класс Singleton Пример расширения класса
- в Swift
- Сопоставимый протокол. Сравните пользовательские объекты.
Функции в Swift
- Объявить функцию в Swift
- Объявить функцию со значением параметра по умолчанию
- Объявить функцию с вариативными параметрами в Swift
Быстрозажимные затворы
- Объявить о закрытии
- Закрытие с несколькими аргументами в Swift
Словари в Swift
- Создать пустой словарь
- Добавить элемент в словарь
- Цикл по словарю
- Удалить элемент из словаря
- Удалить все элементы из словаря
Массивы в Swift
- Создать пустой массив
- Создать массив со значениями по умолчанию
- Проверить, пуст ли массив
- Цикл по элементам в массиве
- Цикл по массиву элементов с индексом
- Удалить все элементы из массива
- Удалить элемент из массива по указанному индексу
- Сортировка массива пользовательских объектов в Swift в порядке возрастания и убывания
Строки
- Сравнение строк без учета регистра в Swift
- Проверить, является ли строковое значение пустым
- Сравнить, равны ли две строки
Хранение данных, запись и чтение в Swift
- NSUserDefaults — запись и чтение значений различных типов данных
- Записать строковое значение в файл
- Пример чтения содержимого файла в Swift
- Чтение и запись строковых значений в файл
- Проверить, существует ли файл
- Удалить файл
- Загрузить содержимое файла свойств в Swift
- Загрузить файл с удаленного URL-адреса в Swift
- Загрузить файл HTML из пакета приложений
Обработка ошибок в Swift
- Обнаружение ошибки. Попробуйте поймать
Date and DateComponents
- Добавить дни, месяцы или годы к текущему объекту Date в Swift
Фоновые потоки в Swift
- Выполнение трудоемкой задачи в фоновом потоке
Кнопки в Swift
- Создать UIButton программно
- UIButton с фоновым изображением
- Программное создание элемента UIBarButtonItem
- Создать элемент UIBarButtonItem с изображением
- Пример отключения UIButton в Swift
Рабочий UITextField в Swift
- Программное создание UITextField в Swift
- Установить клавишу возврата клавиатуры UITextField как кнопку «Готово» и закрыть клавиатуру
- Проверить, содержит ли UITextField значение
UITextView
- Программное создание UITextView в Swift
- Программная настройка UITextView в Swift
- Закрыть клавиатуру, когда пользователь коснется UITextView
UISwitch в Swift
- Создать UISwitch программно
UISlider
- Создать UISlider программно
Работа с UIView
- Программное создание UIView в Swift
UIStepper
- Создание UIStepper в Swift программно
UISegmentedControl
- Программное создание UISegmentedControl
UINavigationBar
- Настройка внешнего вида UINavigationBar программно через AppDelegate Swift File
- Программная настройка внешнего вида UINavigationBar в UIViewController
UIImageView и UIImage
- Создать циклический UIImage программно
- Сделать углы UIImage закругленными программно
- UIImageView и UIImage. Загрузить изображение с удаленного URL.
UIWebView
- Программное создание UIWebView и загрузка удаленной веб-страницы с помощью NSURL
- Программное создание UIWebView и отображение HTML-кода
- Программно загрузить файл HTML в UIWebView
ВКВебВиев
- ВКВебВиев. Загрузить файл HTML из пакета приложений
- Вставка JavaScript в WKWebView
UIDatePicker
- Создать UIDatePicker программно
UIImagePickerController
- Программное создание UIImagePicketController
UIActivityIndicatorView
- Программное создание UIActivityIndicatorView
UITabBarController
- Создать UITabBarController программно
UIAlertController или диалоговые сообщения в Swift
- Создать UIAlertController с кнопкой OK
- Создать UIAlertController с кнопками OK и Cancel
- UIAlertController с двумя кнопками и UITextField
- Пример ActionSheet в Swift
UITableView
- Создать UITableView программно в Swift
- Пример UITableViewRowAction в Swift
UICollectionView
- Создать UICollectionView в Swift программно
- UICollectionView. Загрузить список изображений с удаленного сервера URL
Представление ViewController(ов)
- Переход от AppDelegate.swift к другому ViewController
- Представить новый ViewController
- Установить контроллер корневого вида окна
- Представление ViewController в NavigationController
Сетевая связь
- Отправить запрос HTTP GET. Пример в Свифте.
- Отправить запрос HTTP POST. Пример на Swift и PHP
- Преобразование строки JSON в NSDictionary в Swift
Размер экрана и ориентация устройства
- Определение границ, высоты и ширины основного экрана
- Определить ориентацию устройства
- Отключить вращение UIViewController
- Отключить вращение UIViewController, встроенного в UINavigationController
AVPlayer , AVPlayerItem и AVPlayerLayer. Воспроизводить музыку.
- AVPlayer. Воспроизведение музыкального файла MP3 с удаленного URL-адреса в Swift
- Добавить ползунок воспроизведения в AVPlayer. Пример в Swift
- AVPlayer. Добавить Periodic Time Observer для обновления слайдера воспроизведения музыки
CoreLocation и MapKit
- Пример определения текущего местоположения пользователя в Swift
- Создать MKMapView в Swift программно
- Поместите булавку на MapView в текущем местоположении пользователя
- MKAnnotationView — отображать пользовательское изображение булавки
- didSelectAnnotationView — Обработка события нажатия пользователем на MKAnnotationView
Amazon AWS
- Загрузка изображения в корзину Amazon AWS S3. Пример кода в Swift
- Выберите изображение с помощью UIImagePickerController и загрузите его в корзину AWS S3
- Удалить файл из корзины Amazon AWS S3
- Список объектов, хранящихся в корзине AWS S3
Facebook SDK для iOS
- Получить данные профиля пользователя Facebook
- Пригласить друзей из Facebook — пример кода в Swift
- Кнопка «Поделиться фото» в Facebook
- Получение и отображение фотографий пользователей Facebook
- FBSDKGraphRequest. Опубликовать сообщение в ленте пользователя на Facebook.
Проверка Touch ID
- Пример кода подтверждения Touch ID в Swift
Регулярные выражения
- Пример проверки кода адреса электронной почты в Swift
Локальные и удаленные уведомления
- UILocalNotification. Создавайте, планируйте и получайте локальные уведомления в Swift
Определение названия текущей модели устройства iOS
- Определение названия текущей модели устройства iOS
Что такое SWIFT-код для банков?
Автор: Эндрю Данн
• Обновлено • 4 минуты чтения
Изображение: мужчина использует мобильный телефон в кафе, чтобы узнать, что такое быстрый код.В двух словах
Когда вы отправляете деньги за границу, код SWIFT помогает гарантировать, что ваши деньги попадут в нужное место. Это уникальный идентификационный номер, используемый в международных банковских переводах.
Примечание редакции: Credit Karma получает вознаграждение от сторонних рекламодателей, но это не влияет на мнение наших редакторов. Наши сторонние рекламодатели не просматривают, не одобряют и не одобряют наш редакционный контент. Это точно, насколько нам известно, когда публикуется.
Мы считаем важным, чтобы вы понимали, как мы зарабатываем деньги. Это довольно просто, на самом деле. Предложения финансовых продуктов, которые вы видите на нашей платформе, исходят от компаний, которые платят нам. Деньги, которые мы зарабатываем, помогают нам предоставлять вам доступ к бесплатным кредитным рейтингам и отчетам, а также помогают нам создавать другие наши замечательные инструменты и учебные материалы.
Компенсация может зависеть от того, как и где продукты появляются на нашей платформе (и в каком порядке). Но поскольку мы обычно зарабатываем деньги, когда вы находите предложение, которое вам нравится, и получаете его, мы стараемся показать вам предложения, которые, по нашему мнению, вам подходят. Вот почему мы предоставляем такие функции, как ваши шансы на одобрение и оценки экономии.
Конечно, предложения на нашей платформе не представляют всех финансовых продуктов, но наша цель — показать вам как можно больше отличных вариантов.
Если вы переводите деньги за границу, вы должны быть уверены, что они попадут в нужное место. Вот тут-то и появляются SWIFT-коды.
SWIFT-коды — это уникальные идентификационные номера, используемые в международных банковских переводах, чтобы указать, какой банк получает деньги.
Если вы студент по обмену, получающий деньги из дома, работник, отправляющий деньги семье за границу, или инвестор в глобальный бизнес, скорее всего, вы воспользуетесь SWIFT-кодом, чтобы убедиться, что ваши деньги поступают в нужный банк. .
Credit Karma Money™ Spend — 100% бесплатное открытие Откройте счет сейчас
- Что такое код SWIFT?
- Как работают коды SWIFT?
- Когда мне может понадобиться код SWIFT?
- Часто задаваемые вопросы о SWIFT-коде
Что такое SWIFT-код?
Коды SWIFT выдаются Обществом всемирных межбанковских финансовых телекоммуникаций, откуда и происходит аббревиатура SWIFT. Базирующаяся в Бельгии международная организация представляет собой кооператив, используемый банками и компаниями по ценным бумагам по всему миру для безопасного финансового общения.
Эти коды также известны как бизнес-идентификационный код или BIC. Термины коды SWIFT и коды BIC взаимозаменяемы.
Что означают цифры в SWIFT-коде?Код SWIFT состоит из восьми или 11 символов, которые могут быть буквами или цифрами. Каждая цифра или буква о чем-то говорит. В восьмизначном коде первые четыре и последние два символа уникальны для финансового учреждения, которому присвоен код. Две средние буквы — это код страны. Например, SWIFT-код Bank of America — BOFAUS3N для входящих переводов в долларах США. BOFA — это код идентификатора банка, US — это код местоположения, а 3N также является частью кода банка.
Для 11-значных кодов последние три символа представляют собой код филиала, который можно использовать для идентификации определенного отдела, подразделения или филиала в финансовом учреждении.
Как работают коды SWIFT?Поскольку каждое финансовое учреждение имеет свой уникальный SWIFT-код, использование этих кодов помогает гарантировать, что деньги, которые вы отправляете (или получаете) по безналичному расчету, поступают на конкретный банковский счет, для которого они предназначены.
Допустим, вы живете в США и хотите перевести 5000 долларов другу в Эстонию. Вы связываетесь со своим банком и просите его начать перевод. Вы сообщите своему банку имя и адрес вашего друга, название и адрес его банка, номер его счета и SWIFT-код его банка. Некоторые банки позволяют вам сделать это онлайн или с помощью мобильного приложения, тогда как другие требуют, чтобы вы сделали это лично или по телефону.
Ваш банк должен убедиться в законности запроса, снять деньги с вашего счета и отправить SWIFT-сообщение в банк вашего друга с инструкциями по зачислению средств на счет вашего друга. Затем банк вашего друга может выбрать, получать ли деньги в долларах США, эстонских кронах или евро.
Поскольку каждый банк проверяет легитимность и безопасность транзакции, переводы SWIFT могут занять несколько дней, пять дней или даже больше, хотя SWIFT предлагает платежи в режиме реального времени. Так же, как за внутренние транзакции может взиматься комиссия за банковский перевод, ваш банк может взимать с вас комиссию за отправку или получение платежа SWIFT.
Когда мне может понадобиться код SWIFT?Если вы отправляете деньги кому-то за границу, вам нужно знать SWIFT-код этого банка. Точно так же, если кто-то является отправителем денег из-за границы, он, скорее всего, попросит SWIFT-код вашего банка.
Большинство банков и компаний, осуществляющих электронные переводы, запрашивают код SWIFT при осуществлении международного банковского перевода.
Credit Karma Money™ Spend — 100% бесплатное открытие Откройте счет сейчас
Где я могу найти свой код SWIFT?Банки, имеющие SWIFT-код, обычно публикуют свои идентификаторы на своих веб-сайтах. Если вы планируете получить перевод из-за границы или перевести деньги за границу, проверьте на веб-сайте своего банка страницу международного перевода, на которой, скорее всего, есть эта информация. Вы также можете обратиться в свой банк и спросить.
Часто задаваемые вопросы по коду SWIFT
В чем разница между кодом SWIFT и маршрутным номером ABA?
Обычно вы используете девятизначный маршрутный номер ABA для внутренних платежей и номер SWIFT для международных транзакций.
В чем разница между кодом SWIFT и IBAN?
IBAN — международный номер банковского счета — это еще один стандартный формат для идентификации банков для зарубежных платежей. В США не используется IBAN, поэтому у американских банков его не будет.
Что такое сеть SWIFT?
Сеть SWIFT — это система, которую банки используют для отправки защищенных финансовых сообщений друг другу.