2015-01-17 1 views
1

저는 CoreData + iCloud를 많이 읽었지만 그 무엇이라해도 이해하기 쉽습니다. 그러나, 나는 매우 일찍 붙어 있고 당신 중 누구라도 생각이 있다면 호기심이 많습니다.Xcode6 및 Swift가 포함 된 iOS8의 CoreData + iCloud

내 워크 벤치 : Xcode6.1.1, 스위프트, 추가 iCloud에 자격 (iOS8.1 시뮬레이터에 테스트뿐만 아니라 iOS8.1 장치)

자신을 위해 보려면와 CoreData는 단순히 시작 새로운 "그을음 Xcode에서 응용 프로그램보기 "프로젝트를 선택하려면"코어 데이터 사용 "확인란을 선택하십시오. 아이 클라우드를 사용하려면, 나는 coordinator!.addPersistentStoreWithType(NSSQLiteStoreType, configuration:URL:options:error:)

나는 또한 NSPersistentStoreCoordinatorStoresWillChangeNotification에 대한 관측을 추가

, NSPersistentStoreCoordinatorStoresDidChangeNotificationNSPersistentStoreDidImportUbiquitousContentChangesNotification를 호출하기 전에

let storeOptions = [ 
    NSPersistentStoreUbiquitousContentNameKey: "iCloudTest" 
] 

을 추가했다. 나는 응용 프로그램을 매우 처음 실행하면

내 콘솔 출력은 다음과 같습니다

Design for iCloud Programming Guide의 체크 포인트에 명시된 바와 같이
storesDidChange: NSConcreteNotification 0x15d6b890 {name = NSPersistentStoreCoordinatorStoresDidChangeNotification; object = <NSPersistentStoreCoordinator: 0x15e96380>; userInfo = { 
added =  (
    "<NSSQLCore: 0x15e9a1b0> (URL: file:///var/mobile/Containers/Data/Application/F2E684E6-6B7B-4429-B9CD-24C45DE18D27/Documents/CoreDataUbiquitySupport/mobile~BB56F5F3-5448-41A3-A142-921D99A85855/iCloudTest/1660860A-83E1-4906-BEB8-DAF02DAC62B0/store/iCloudTest.sqlite)" 
    ); 
}} 
2015-01-16 22:17:51.367 iCloudTest[783:414835] -[PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:](808): CoreData: Ubiquity: mobile~BB56F5F3-5448-41A3-A142-921D99A85855:iCloudTest 
Using local storage: 1 
managedObjectContext: Optional(<NSManagedObjectContext: 0x15d69340>) 
2015-01-16 22:17:51.815 iCloudTest[783:414857] -[PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:](808): CoreData: Ubiquity: mobile~BB56F5F3-5448-41A3-A142-921D99A85855:iCloudTest 
Using local storage: 0 

, 내가 (곧 Using local storage: 0 후 다음 Using local store: 1을보고 생각하고 있어요 1-5 초). 여태까지는 그런대로 잘됐다. 나는 행복하다. 갑자기

storesDidChange: NSConcreteNotification 0x166606f0 {name = NSPersistentStoreCoordinatorStoresDidChangeNotification; object = <NSPersistentStoreCoordinator: 0x165485b0>; userInfo = { 
added =  (
    "<NSSQLCore: 0x1658dfb0> (URL: file:///var/mobile/Containers/Data/Application/A742A53E-6785-40AC-A21A-16D4BB5F332E/Documents/CoreDataUbiquitySupport/mobile~9CB93B5A-F976-4AB8-B1B3-290F18DE796A/iCloudTest/0A12A44B-599B-49DD-8AD8-546EFD4E26DC/store/iCloudTest.sqlite)" 
    ); 
}} 
2015-01-16 22:08:55.133 iCloudTest[770:412842] -[PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:](808): CoreData: Ubiquity: mobile~9CB93B5A-F976-4AB8-B1B3-290F18DE796A:iCloudTest 
Using local storage: 1 
managedObjectContext: Optional(<NSManagedObjectContext: 0x1658f2e0>) 
2015-01-16 22:11:29.005 iCloudTest[770:412855] -[PFUbiquitySafeSaveFile waitForFileToDownload:](489): CoreData: Ubiquity: <PFUbiquityBaseline: 0x165a5950>(0) 
    permanentLocation: <PFUbiquityLocation: 0x165a6690>: /var/mobile/Library/Mobile Documents/iCloud~com~mycompany~iCloudTest/CoreData/iCloudTest/.baseline/iCloudTest/47DEQpj8HBSa~_TImW~5JCeuQeRkm5NMpJWZG3hSuFU=/baseline.zip 
    safeLocation: <PFUbiquityLocation: 0x165a5ac0>: /var/mobile/Library/Mobile Documents/iCloud~com~mycompany~iCloudTest/CoreData/iCloudTest/.baseline/iCloudTest/47DEQpj8HBSa~_TImW~5JCeuQeRkm5NMpJWZG3hSuFU=/mobile~9CB93B5A-F976-4AB8-B1B3-290F18DE796A 
    currentLocation: <PFUbiquityLocation: 0x165a6690>: /var/mobile/Library/Mobile Documents/iCloud~com~mycompany~iCloudTest/CoreData/iCloudTest/.baseline/iCloudTest/47DEQpj8HBSa~_TImW~5JCeuQeRkm5NMpJWZG3hSuFU=/baseline.zip 

    storeName: iCloudTest 
    modelVersionHash: 47DEQpj8HBSa~_TImW~5JCeuQeRkm5NMpJWZG3hSuFU= 
    baselineArchiveLocation: <PFUbiquityLocation: 0x165a6690>: /var/mobile/Library/Mobile Documents/iCloud~com~mycompany~iCloudTest/CoreData/iCloudTest/.baseline/iCloudTest/47DEQpj8HBSa~_TImW~5JCeuQeRkm5NMpJWZG3hSuFU=/baseline.zip 

Download failed for file, error: Error Domain=NSCocoaErrorDomain Code=512 "The file download timed out." UserInfo=0x16670090 {NSLocalizedDescription=The file download timed out.} 
2015-01-16 22:11:29.009 iCloudTest[770:412855] -[PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:](808): CoreData: Ubiquity: mobile~9CB93B5A-F976-4AB8-B1B3-290F18DE796A:iCloudTest 
Using local storage: 0 

는, 아이 클라우드가 역할 :

지금는 한 줄의 코드를 변경하지 않고, 단순히 재 실행중인 응용 프로그램을 다음 로그 출력을 발생! 나는 Using local storage: 1Using local storage 0 사이의 약 90 초를 맞췄다.

걱정해야 할 부분이 있습니까? sync'ing이 내 사용자에게 오래 걸린다면 상당히 불쾌한 경험이 될 것입니다 (단지 1 분 이상 앱을 사용하고 갑자기 iCloud 콘텐츠를 사용한다고 생각합니다 ...). Using local storage 0이 결국 실행되지만 iCloud 동기화 사용 가능? 그러나 디버그 탐색기의 iCloud Report에는 Status: iCloud not configured이 표시됩니다.

내가 잘못 했나요?

추 신 : iCloud 인 타이틀먼트를 추가하기위한 코드가 추가 된 직선형 애플 상용구입니다.

답변

0

걱정할 필요가 없습니다. iCloud와의 동기화는 본질적으로 비동기식이며 오류가 발생하기 쉽습니다 (비행기 모드와 같습니다). 결국 로컬 및 iCloud 버전이 동기화되고 동일한 레코드가 충돌하는 경우를 처리해야합니다.

관련 문제