swift school #3

Post on 15-Jun-2015

225 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Swift Школа

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

План

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

• Практика CloudKit

• iOS8 - Size Classes

CloudKit

CloudKit

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

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

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

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

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

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

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

• Запись - CKRecord

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

• ID записи - CKRecordID

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

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

CKContainer

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

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

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

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

CKDatabase

Public Private

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

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

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

CKRecord

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

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

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

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

CKRecordZone

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

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

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

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

CKReference

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

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

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

CKAsset

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

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

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

CKReference

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

person["passport"] = passport

Практика CloudKit

Size Classes

Structure

До iOS 8

Device type Interface Orientation Size

iOS 8 и позже

Traits and trait collections Size

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 } }

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

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

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

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

x-sizeClass Regular

y-sizeClass Regular

idiom Pad

scale 1.0

x-sizeClass Regular

y-sizeClass Regular

idiom Pad

scale 1.0

x-sizeClass Compact

y-sizeClass Regular

idiom Phone

scale 2.0

x-sizeClass Compact

y-sizeClass Compact

idiom Phone

scale 2.0

+x-sizeClass Compact

x-sizeClass Regular

y-sizeClass Regular

idiom Pad

scale 1.0

x-sizeClass Regular

y-sizeClass Regular

idiom Pad

scale 1.0

+ x-sizeClass Compact

@interface UIViewController <UITraitEnvironment> !

- (void)setOverrideTraitCollection: forChildViewController: !

- (UITraitCollection *)overrideTraitCollectionForChildViewController: !

@end

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

1. UIScreen

2. UIWindow

3. UIViewController

4. UIView

top related