250
© 2019 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. #WWDC19 Nick Gillett, Core Data Using Core Data with CloudKit

Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

© 2019 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

#WWDC19

Nick Gillett, Core Data

•Using Core Data with CloudKit

Page 2: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Using Core Data with CloudKit

Page 3: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Using Core Data with CloudKit

Everything should sync

Page 4: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Using Core Data with CloudKit

Everything should sync

Sync should be easy

Page 5: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 6: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 7: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 8: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 9: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 10: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 11: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 12: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 13: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 14: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 15: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 16: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 17: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 18: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 19: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 20: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 21: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 22: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 23: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 24: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 25: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 26: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Page 27: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Core Data provides local persistence

Page 28: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Core Data provides local persistence

CloudKit provides distributed persistence

Page 29: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Core Data provides local persistence

CloudKit provides distributed persistence

Both exist on all platforms

Page 30: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Core Data provides local persistence

CloudKit provides distributed persistence

Both exist on all platforms

Both support a wide variety of applications

Page 31: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Page 32: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Objects

Models

Stores

Page 33: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Objects

Models

Stores

Core Data CloudKit

Page 34: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Objects

Models

Stores

Core Data CloudKit

NSManagedObject

Page 35: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Objects

Models

Stores

Core Data CloudKit

NSManagedObject CKRecord

Page 36: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Objects

Models

Stores

Core Data CloudKit

NSManagedObject CKRecord

NSManagedObjectModel

Page 37: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Objects

Models

Stores

Core Data CloudKit

NSManagedObject CKRecord

NSManagedObjectModel Schema

Page 38: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Objects

Models

Stores

Core Data CloudKit

NSManagedObject CKRecord

NSManagedObjectModel

NSPersistentStore

Schema

Page 39: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Existing Technologies

Objects

Models

Stores

Core Data CloudKit

NSManagedObject CKRecord

NSManagedObjectModel

NSPersistentStore CKRecordZone / CKDatabase

Schema

Page 40: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 41: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 42: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 43: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 44: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 45: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 46: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 47: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 48: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 49: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 50: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 51: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 52: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 53: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 54: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 55: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 56: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 57: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 58: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 59: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 60: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 61: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 62: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 63: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 64: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 65: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 66: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 67: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 68: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 69: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 70: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

What Is NSPersistentCloudKitContainer?

Page 71: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

What Is NSPersistentCloudKitContainer?

Encapsulation of common patterns

Page 72: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

What Is NSPersistentCloudKitContainer?

Encapsulation of common patterns

Save thousands of lines of code

Page 73: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

What Is NSPersistentCloudKitContainer?

Encapsulation of common patterns

Save thousands of lines of code

Foundation we can build on

Page 74: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

What Is NSPersistentCloudKitContainer?

Encapsulation of common patterns

Save thousands of lines of code

Foundation we can build on

Help us help you! Submit feedback!

Page 75: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer

Page 76: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer

A local replica of all CloudKit data

Page 77: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer

A local replica of all CloudKit data

Robust scheduling and error recovery

Page 78: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer

A local replica of all CloudKit data

Robust scheduling and error recovery

Transformation of NSManagedObject to CKRecord

Page 79: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

Page 80: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

Page 81: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

Page 82: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

Page 83: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

Page 84: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

Page 85: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

Page 86: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

milliseconds seconds – minutes

Page 87: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

GB/s KB/s – MB/s

Page 88: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Local Replica

Page 89: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 90: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 91: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 92: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 93: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 94: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 95: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 96: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 97: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 98: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 99: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 100: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 101: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 102: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 103: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 104: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 105: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 106: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Scheduling

Page 107: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 108: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 109: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 110: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 111: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 112: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 113: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 114: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 115: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 116: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 117: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 118: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 119: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 120: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 121: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 122: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSManagedObject to CKRecord

Page 123: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer

Page 124: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer

Complete local replica

Page 125: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer

Complete local replica

Automatic scheduling

Page 126: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer

Complete local replica

Automatic scheduling

Serialization from NSManagedObject to CKRecord

Page 127: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Life After Adopting NSPersistentCloudKitContainer

Page 128: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Life After Adopting NSPersistentCloudKitContainer

•Build great applications with Core Data

Page 129: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Life After Adopting NSPersistentCloudKitContainer

•Build great applications with Core Data•Add on to our foundation

Page 130: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Learning About NSPersistentCloudKitContainer

Page 131: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Learning About NSPersistentCloudKitContainer

Mirroring a Core Data Store with CloudKit

Setting Up Core Data with CloudKit

Creating a Core Data Model for CloudKit

Syncing a Core Data Store with CloudKit

Reading CloudKit Records for Core Data

Page 132: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Build Great Apps with Core Data

Page 133: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Build Great Apps with Core Data

Responsive user interfaces with NSFetchResultsController

Page 134: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Build Great Apps with Core Data

Responsive user interfaces with NSFetchResultsController

Stable views with query generations

Page 135: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Build Great Apps with Core Data

Responsive user interfaces with NSFetchResultsController

Stable views with query generations

Change processing with history tracking

Page 136: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Build Great Apps with Core Data

Responsive user interfaces with NSFetchResultsController

Stable views with query generations

Change processing with history tracking

Making Apps with Core Data Thursday, 3:00

Page 137: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 138: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 139: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 140: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 141: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Life After Adopting NSPersistentCloudKitContainer

•Build great applications with Core Data •Add on to our foundation

Page 142: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Extending NSPersistentCloudKitContainer

Page 143: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Extending NSPersistentCloudKitContainer

Working with multiple stores

Page 144: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Extending NSPersistentCloudKitContainer

Working with multiple stores

Working with the CloudKit Schema

Page 145: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Extending NSPersistentCloudKitContainer

Working with multiple stores

Working with the CloudKit Schema

Data Modeling for collaboration

Page 146: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Multiple Store Use Cases

Page 147: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Multiple Store Use Cases

Data Segregation

Page 148: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Multiple Store Use Cases

Data Segregation

Enforcement of different types of constraints

Page 149: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Multiple Store Use Cases

Data Segregation

Enforcement of different types of constraints

Throttling/Coalescing

Page 150: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 151: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 152: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 153: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 154: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 155: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 156: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 157: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 158: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 159: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 160: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 161: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 162: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 163: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 164: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 165: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 166: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 167: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 168: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 169: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 170: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 171: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

let container = NSPersistentCloudKitContainer(name: "CloudKitContainer")

let local = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/local.sqlite")) local.configuration = "Local"

let cloud = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/cloud.sqlite")) cloud.configuration = "Cloud" cloud.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.demo")

container.persistentStoreDescriptions = [ local, cloud ]

Page 172: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

let container = NSPersistentCloudKitContainer(name: "CloudKitContainer")

let local = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/local.sqlite")) local.configuration = "Local"

let cloud = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/cloud.sqlite")) cloud.configuration = "Cloud" cloud.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.demo")

container.persistentStoreDescriptions = [ local, cloud ]

Page 173: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

let container = NSPersistentCloudKitContainer(name: "CloudKitContainer")

let local = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/local.sqlite")) local.configuration = "Local"

let cloud = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/cloud.sqlite")) cloud.configuration = "Cloud" cloud.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.demo")

container.persistentStoreDescriptions = [ local, cloud ]

Page 174: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

let container = NSPersistentCloudKitContainer(name: "CloudKitContainer")

let local = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/local.sqlite")) local.configuration = "Local"

let cloud = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/cloud.sqlite")) cloud.configuration = "Cloud" cloud.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.demo")

container.persistentStoreDescriptions = [ local, cloud ]

Page 175: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

let container = NSPersistentCloudKitContainer(name: "CloudKitContainer")

let local = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/local.sqlite")) local.configuration = "Local"

let cloud = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/cloud.sqlite")) cloud.configuration = "Cloud" cloud.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.demo")

container.persistentStoreDescriptions = [ local, cloud ]

Page 176: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 177: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 178: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 179: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 180: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 181: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer — Multiple Stores

Page 182: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

let container = NSPersistentCloudKitContainer(name: "CloudKitContainer")

let local = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/local.sqlite")) local.configuration = "Local"

let cloud = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/cloud.sqlite")) cloud.configuration = "Cloud" cloud.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.demo")

let shared = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/shared.sqlite")) shared.configuration = "Shared" shared.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.shared")

container.persistentStoreDescriptions = [ local, cloud, shared ]

Page 183: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

let container = NSPersistentCloudKitContainer(name: "CloudKitContainer")

let local = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/local.sqlite")) local.configuration = "Local"

let cloud = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/cloud.sqlite")) cloud.configuration = "Cloud" cloud.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.demo")

let shared = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/shared.sqlite")) shared.configuration = "Shared" shared.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.shared")

container.persistentStoreDescriptions = [ local, cloud, shared ]

Page 184: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

let container = NSPersistentCloudKitContainer(name: "CloudKitContainer")

let local = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/local.sqlite")) local.configuration = "Local"

let cloud = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/cloud.sqlite")) cloud.configuration = "Cloud" cloud.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.demo")

let shared = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/shared.sqlite")) shared.configuration = "Shared" shared.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.com.wwdc.shared")

container.persistentStoreDescriptions = [ local, cloud, shared ]

Page 185: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer's Schema

Page 186: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer's Schema

Record types and entity names

Page 187: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer's Schema

Record types and entity names

Asset externalization

Page 188: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

NSPersistentCloudKitContainer's Schema

Record types and entity names

Asset externalization

Relationships

Page 189: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Sample Application Data Model

Attributes content title

Relationships attachments tags

Post

Attributes thumbnail uuid

Relationships imageData post

Attachment

Attributes color name uuid

Relationships posts

Tag

Attributes data

Relationships attachment

ImageData

Page 190: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

Page 191: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

Page 192: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = Post; }, recordType=CD_Post>

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

Page 193: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = Post; }, recordType=CD_Post>

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

Page 194: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = Post; }, recordType=CD_Post>

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

Page 195: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = ImagePost; }, recordType=CD_Post>

Page 196: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = ImagePost; }, recordType=CD_Post>

Page 197: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = VideoPost; }, recordType=CD_Post>

Page 198: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = VideoPost; }, recordType=CD_Post>

Page 199: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = Post; }, recordType=CD_Post>

Page 200: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = Post; }, recordType=CD_Post>

Page 201: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = Post; }, recordType=CD_Post>

Page 202: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "Amazing... but brief!"; "CD_title" = "An amazing post!"; "CD_entityName" = Post; }, recordType=CD_Post>

Page 203: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An amazing post!"; "CD_entityName" = Post; }, recordType=CD_Post>

Page 204: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An amazing post!"; "CD_entityName" = Post; }, recordType=CD_Post>

Page 205: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

Page 206: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var title: String? @NSManaged public var content: String? @NSManaged public var attachments: NSSet? @NSManaged public var tags: NSSet? }

Page 207: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Sample Application Data Model

Attributes content title

Relationships attachments tags

Post

Attributes thumbnail uuid

Relationships imageData post

Attachment

Attributes color name uuid

Relationships posts

Tag

Attributes data

Relationships attachment

ImageData

Page 208: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var attachments: NSSet? }

@objc(Attachment) public class Attachment: NSManagedObject { @NSManaged public var post: Post? }

Page 209: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var attachments: NSSet? }

@objc(Attachment) public class Attachment: NSManagedObject { @NSManaged public var post: Post? }

Page 210: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var attachments: NSSet? }

@objc(Attachment) public class Attachment: NSManagedObject { @NSManaged public var post: Post? }

Page 211: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var attachments: NSSet? }

@objc(Attachment) public class Attachment: NSManagedObject { @NSManaged public var post: Post? }

<CKRecord: 0x7fd0b4011bf0; recordID=Attachment_UUID, values={ "CD_entityName" = Attachment; "CD_imageData" = "ImageData_UUID"; "CD_post" = "Post_UUID"; "CD_uuid" = "B7841A69-868D-49A9-851D-3BB7030DA73A"; }, recordType=CD_Attachment>

Page 212: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var attachments: NSSet? }

@objc(Attachment) public class Attachment: NSManagedObject { @NSManaged public var post: Post? }

<CKRecord: 0x7fd0b4011bf0; recordID=Attachment_UUID, values={ "CD_entityName" = Attachment; "CD_imageData" = "ImageData_UUID"; "CD_post" = "Post_UUID"; "CD_uuid" = "B7841A69-868D-49A9-851D-3BB7030DA73A"; }, recordType=CD_Attachment>

Page 213: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var attachments: NSSet? }

@objc(Attachment) public class Attachment: NSManagedObject { @NSManaged public var post: Post? }

<CKRecord: 0x7fd0b4011bf0; recordID=Attachment_UUID, values={ "CD_entityName" = Attachment; "CD_imageData" = "ImageData_UUID"; "CD_post" = "Post_UUID"; "CD_uuid" = "B7841A69-868D-49A9-851D-3BB7030DA73A"; }, recordType=CD_Attachment>

Page 214: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Sample Application Data Model

Attributes content title

Relationships attachments tags

Post

Attributes thumbnail uuid

Relationships imageData post

Attachment

Attributes color name uuid

Relationships posts

Tag

Attributes data

Relationships attachment

ImageData

Page 215: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var tags: NSSet? }

@objc(Tag) public class Tag: NSManagedObject { @NSManaged public var posts: NSSet? }

Page 216: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

@objc(Post) public class Post: NSManagedObject { @NSManaged public var tags: NSSet? }

@objc(Tag) public class Tag: NSManagedObject { @NSManaged public var posts: NSSet? }

Page 217: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

<CKRecord: 0x7fd0b2539220; recordID=Post_UUID, values={ "CD_content" = "An example core data string"; "CD_content_ckAsset" = "<CKAsset: 0x7fd0b2515c20;...>"; "CD_title" = "An example core data string"; "CD_title_ckAsset" = "<CKAsset: 0x7fd0b240bd40;...>"; "CD_entityName" = Post; }, recordType=CD_Post>

<CKRecord: 0x7fd0b2419da0; recordID=Tag_UUID, values={ "CD_color" = {length = 17, bytes = 0x536f6d65206578616d706c652064617461}; "CD_color_ckAsset" = "<CKAsset: 0x7fd0b2532de0;...>"; "CD_name" = "An example core data string"; "CD_name_ckAsset" = "<CKAsset: 0x7fd0b24215d0;...>"; "CD_uuid" = "DEB9D10A-55C1-42EC-BA15-77A41028AF9B"; "CD_entityName" = Tag; }, recordType=CD_Tag>

Page 218: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

<CKRecord: 0x7fd0b24202f0; recordID=CDMR_UUID, values={ "CD_entityNames" = "Post:Tag"; "CD_recordNames" = "Post_UUID:Tag_UUID"; "CD_relationships" = "tags:posts"; }, recordType=CDMR>

Page 219: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

<CKRecord: 0x7fd0b24202f0; recordID=CDMR_UUID, values={ "CD_entityNames" = "Post:Tag"; "CD_recordNames" = "Post_UUID:Tag_UUID"; "CD_relationships" = "tags:posts"; }, recordType=CDMR>

Page 220: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

<CKRecord: 0x7fd0b24202f0; recordID=CDMR_UUID, values={ "CD_entityNames" = "Post:Tag"; "CD_recordNames" = "Post_UUID:Tag_UUID"; "CD_relationships" = "tags:posts"; }, recordType=CDMR>

Page 221: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

<CKRecord: 0x7fd0b24202f0; recordID=CDMR_UUID, values={ "CD_entityNames" = "Post:Tag"; "CD_recordNames" = "Post_UUID:Tag_UUID"; "CD_relationships" = "tags:posts"; }, recordType=CDMR>

Page 222: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

<CKRecord: 0x7fd0b24202f0; recordID=CDMR_UUID, values={ "CD_entityNames" = "Post:Tag"; "CD_recordNames" = "Post_UUID:Tag_UUID"; "CD_relationships" = "tags:posts"; }, recordType=CDMR>

Page 223: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Page 224: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Collaboration is not conflict resolution

Page 225: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Collaboration is not conflict resolution

NSPersistentCloudKitContainer resolves conflicts automatically

Page 226: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Collaboration is not conflict resolution

NSPersistentCloudKitContainer resolves conflicts automatically

Get better merge behavior with relationships

Page 227: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 228: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 229: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 230: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 231: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 232: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 233: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 234: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 235: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 236: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 237: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit
Page 238: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Page 239: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Attributes content title

Relationships

Post

Page 240: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Avoid collisions on "flat" values

Attributes content title

Relationships

Post

Page 241: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Avoid collisions on "flat" values

Instead model values as contributions

Attributes title

Relationships content

Post

Attributes contribution

Relationships post

PostContent

Page 242: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Avoid collisions on "flat" values

Instead model values as contributions

Leverage relationships for eventual consistency Attributes

title

Relationships content

Post

Attributes contribution

Relationships post

PostContent

Page 243: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Avoid collisions on "flat" values

Instead model values as contributions

Leverage relationships for eventual consistency

Order contributions

Attributes contribution contributionDate

Relationships post

PostContent

Attributes title

Relationships content

Post

Page 244: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Data Modeling for Collaboration

Avoid collisions on "flat" values

Instead model values as contributions

Leverage relationships for eventual consistency

Order contributions

Iterate as necessary

Attributes contribution contributionDate contributorID IamportTimestamp

Relationships post childContributionsparentContribution

PostContent

Attributes title

Relationships content

Post

Page 245: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Summary

Page 246: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Summary

Easy sync with NSPersistentCloudKitContainer

Page 247: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Summary

Easy sync with NSPersistentCloudKitContainer

New sample code and documentation!

Page 248: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

Summary

Easy sync with NSPersistentCloudKitContainer

New sample code and documentation!

Build on NSPersistentCloudKitContainer

Page 249: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit

More Information

Core Data and CloudKit Lab Tuesday, 3:00

CloudKit Lab Wednesday, 9:00

Core Data Lab Wednesday, 2:00

developer.apple.com/wwdc19/202

Page 250: Using Core Data with CloudKit - img1.vued.vanthink.cnimg1.vued.vanthink.cn/202_using_core_data_with_cloudkit.pdf · Existing Technologies Core Data provides local persistence CloudKit