2013-02-03 3 views
0

데이터를 로컬 데이터 스토어에서 바로 표시해야하는 앱을 만들고 있습니다. iCloud를 사용할 수 있는지 여부를 결정하기 위해 앱이 시작되면 백그라운드 스레드를 시작합니다.iOS, 핵심 데이터 및 iCloud - 전환 컨텍스트

어디서나 찾아서 해결 방법을 찾을 수 없습니다. iCloud를 사용할 수있게되면 persistentStore의 "옵션"을 iCloud 트랜잭션 사용을 시작하도록 변경할 수 있습니까?

이 상황에서 적절한 접근 방식이 무엇인지 확신 할 수 없습니다. 내가 시도한 모든 것은 응용 프로그램을 충돌시킵니다.

원래 iCloud 검사가 백그라운드 스레드가 아니 어서 앱이 정상적으로 작동했지만 가끔 시간 초과되었습니다.

답변

0

언제 iCloud를 사용할 수 있는지 알 수 없습니다. 데이터로 작업하지만 iCloud로 직접 보내지는 않습니다. 대신 iOS가 iOS를 사용합니다. 따라서 데이터 전송시기와 방법을 알 수 있습니다.

0

아니요, NSPersistentStore 개체가있는 경우 옵션을 변경할 수 없습니다. 영구 저장소를 NSPersistentStoreCoordinator에 추가 할 때만 옵션을 지정할 수 있습니다. 변화하는 옵션에 가장 근접한 것은 핵심 데이터 스택 전체를 해체하고 다른 옵션으로 다시 시작하는 것입니다. 때문에,하지만, 도움이되지 것

: 당신이 아이 클라우드 (나는 그 ubiquityIdentityToken를 통해 또는 URLForUbiquityContainerIdentifier:를 호출하거나, NSFileManager를 사용하여 추측하고있어) 사용할 수 있음을 감지 한 경우에도

  • , 전화 addPersistentStoreWithType:configuration:URL:options:error:까지 계속 차단 될 수 있습니다. iCloud에서 새 데이터를 사용할 수있는 경우 영구 저장소를 추가 할 때까지 다운로드가 시작되지 않으며 다운로드 프로세스가 끝날 때까지 해당 메서드가 반환되지 않습니다. 그리고 때로는 iCloud로 인해 당분간 해당 메소드가 블록되지 않게됩니다.

  • iCloud가 아닌 옵션을 사용하는 동안 사용자가 데이터를 변경하게하면 해당 변경 사항이 나중에 클라우드로 자동 전송되지 않습니다. 핵심 데이터는 iCloud가 활성 상태 일 때 데이터가 변경 될 때만 변경 사항을 iCloud에 보내며, 이로 인해 트랜잭션이 생성됩니다. 사용자가 변경 한 내용을로드하고 다시 저장해야합니다. 그렇지 않으면 변경 사항이 클라우드에 적용되지 않습니다.

iCloud와 함께 핵심 데이터를 사용할 때 중요한 걸림돌이 될 수 있습니다. Core Data가 iCloud와 통신을 완료 할 때까지 전체 데이터 저장소를 사용할 수 없습니다. 영구 저장소를 추가하라는 호출이 그때까지 반환되지 않기 때문입니다. 그리고 당신은 그 과정을 빠르게하기 위해 아무것도 할 수 없습니다. 코어 데이터와 함께 iCloud를 계속 사용하려고하면 두통에 시달리게됩니다.

데이터의 성격에 따라 은 순전히 로컬이고 iCloud를 통해 동기화되는 두 개의 데이터 저장소를 사용할 수 있습니다. iCloud가 유용 할만큼 잘 작동하도록 노력하면서 순수하게 로컬 데이터 저장소를 사용할 수 있습니다. 하나의 데이터 저장소를 사용하는 경우 지연이 발생합니다.

+0

정보 주셔서 감사합니다! – user2037316

+0

도움이된다면 답을 "수락"하십시오. :) –

관련 문제