SWIFT - School-Wide Integration Framework for Transformation 1
Swift School #3
-
Upload
sergey-pronin -
Category
Education
-
view
225 -
download
4
description
Transcript of Swift School #3
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