swift school #3

28
Swift Школа Сергей Пронин Empatika

Upload: sergey-pronin

Post on 15-Jun-2015

225 views

Category:

Education


4 download

DESCRIPTION

Третья встреча Swift School

TRANSCRIPT

Page 1: Swift School #3

Swift Школа

Сергей Пронин Empatika

Page 2: Swift School #3

План

• iOS8 - Введение в CloudKit

• Практика CloudKit

• iOS8 - Size Classes

Page 3: Swift School #3

CloudKit

Page 4: Swift School #3
Page 5: Swift School #3

CloudKit

• Обёртка для доступа напрямую к iCloud

• Кроссплатформенная поддержка (iOS / Mac OS)

• Доступ к iCloud аккаунтам

• Структурированные и файловые данные

• Только “транспорт” - не хранение

Page 6: Swift School #3

Структуры данных• Контейнер - CKContainer

• База данных - CKDatabase

• Запись - CKRecord

• Зона данных - CKZone

• ID записи - CKRecordID

• Отношения - CKReference

• Неструктурированные данные - CKAsset

Page 7: Swift School #3

CKContainer

• Один на приложение

• Инкапсуляция данных (public / private для юзера)

• Можно передавать другим приложениям

• Управляется через админку

Page 8: Swift School #3

CKDatabase

Page 9: Swift School #3

Public Private

Данные Общие данные Только для юзера

Аккаунт Только для записи Обязательно

Квота Разработчик Пользователи

Page 10: Swift School #3

CKRecord

• Структурированные данные

• Пары ключ-значение

• Схема данных формируется на ходу

Page 11: Swift School #3

Допустимые типыNSString -> String NSNumber -> Int, Double, Float, Bool NSData NSDate CLLocation CKReference CKAsset NSArray [ * ]

Page 12: Swift School #3

CKRecordZone

Page 13: Swift School #3

CKRecordIDclass CKRecordID : … { convenience init(recordName: String!) init(recordName: String!, zoneID: CKRecordZoneID!)

var recordName: String! { get } var zoneID: CKRecordZoneID! { get } }

• Можно создать самому либо автоматически

• Полностью нормализованы - содержат информацию о местонахождении записи

Page 14: Swift School #3

CKReference

var person = CKRecord(recordType: "Person") var city = CKRecord(recordType: "City")

var reference = CKReference(record: city, action: .None)

person.setObject(reference, forKey: "hometown")

Page 15: Swift School #3

CKAsset

• Неструктурированные данные

• У юзера хранятся на диске

• Являются полями CKRecord

Page 16: Swift School #3

CKReference

var person = CKRecord(recordType: "Person") var passport = CKAsset(fileURL: passportFileURL)

person["passport"] = passport

Page 17: Swift School #3

Практика CloudKit

Page 18: Swift School #3

Size Classes

Page 19: Swift School #3

Structure

До iOS 8

Device type Interface Orientation Size

iOS 8 и позже

Traits and trait collections Size

Page 20: Swift School #3

Trait collectionclass UITraitCollection : NSObject, NSCopying, NSSecureCoding, NSCoding { func containsTraitsInCollection(trait: UITraitCollection!) -> Bool init(traitsFromCollections traitCollections: [AnyObject]!) -> UITraitCollection init(userInterfaceIdiom idiom: UIUserInterfaceIdiom) -> UITraitCollection var userInterfaceIdiom: UIUserInterfaceIdiom { get } init(displayScale scale: CGFloat) -> UITraitCollection var displayScale: CGFloat { get } init(horizontalSizeClass: UIUserInterfaceSizeClass) -> UITraitCollection var horizontalSizeClass: UIUserInterfaceSizeClass { get } init(verticalSizeClass: UIUserInterfaceSizeClass) -> UITraitCollection var verticalSizeClass: UIUserInterfaceSizeClass { get } }

Page 21: Swift School #3

HorizontalSizeClass Горизонтальная спецификация

VerticalSizeClass Вертикальная спецификация

UserInterfaceIdiom Тип устройства

DisplayScale Масштаб экрана

Page 22: Swift School #3

x-sizeClass Regular

y-sizeClass Regular

idiom Pad

scale 1.0

Page 23: Swift School #3

x-sizeClass Regular

y-sizeClass Regular

idiom Pad

scale 1.0

Page 24: Swift School #3

x-sizeClass Compact

y-sizeClass Regular

idiom Phone

scale 2.0

Page 25: Swift School #3

x-sizeClass Compact

y-sizeClass Compact

idiom Phone

scale 2.0

Page 26: Swift School #3

+x-sizeClass Compact

x-sizeClass Regular

y-sizeClass Regular

idiom Pad

scale 1.0

Page 27: Swift School #3

x-sizeClass Regular

y-sizeClass Regular

idiom Pad

scale 1.0

+ x-sizeClass Compact

@interface UIViewController <UITraitEnvironment> !

- (void)setOverrideTraitCollection: forChildViewController: !

- (UITraitCollection *)overrideTraitCollectionForChildViewController: !

@end

Page 28: Swift School #3

Кто обладает свойством trait collection

1. UIScreen

2. UIWindow

3. UIViewController

4. UIView