Как да активирате поддръжката на iCloud за sqlite?

Искам да осигуря поддръжка на iCloud за моята обвивка около sqlite. Не използва Coredata.

Чудя се как да активирам iCloud за него. Съдържанието на базата данни се променя през цялото време (е за фактуриране). Също така, ако е възможно да има някакъв вид версия, ще бъде чудесно.

Съществува ли някаква проба, която мога да използвам, за да направя това?


person mamcx    schedule 09.08.2011    source източник


Отговори (2)


Краткият отговор е не, ще трябва да използвате Core Data, както подозирате. Apple заяви, че sqlite не се поддържа.

Редактиране: Вижте раздела за iCloud, който е вече в Ръководството за програмиране на приложения за iOS под Използване на iCloud във връзка с бази данни

Използването на iCloud с база данни SQLite е възможно само ако приложението ви използва Core Data за управление на тази база данни. Достъпът до файлове на живи бази данни в iCloud с помощта на интерфейсите SQLite не се поддържа и вероятно ще повреди вашата база данни. Можете обаче да създадете хранилище за основни данни, базирано на SQLite, стига да следвате няколко допълнителни стъпки, когато настройвате структурите си за основни данни. Можете също така да продължите да използвате други типове хранилища за основни данни — т.е. хранилища, които не са базирани на SQLite — без никакви специални модификации.

person kris    schedule 17.10.2011

Не можете просто да поставите базата данни SQLite в контейнера iCloud, защото може да се повреди. (Докато модифицирате SQLite DB, временните файлове се създават и преименуват, така че ако процесът на синхронизиране започне да копира тези файлове, ще получите повредена база данни.)

Ако не искате да се преместите в Core Data, можете да направите това, което Core Data прави: да съхранявате вашата база данни в папката с документи и да съхранявате регистър на транзакциите в контейнера iCould. Всеки път, когато промените базата данни, вие добавяте тези промени към лог файл, така че можете да ги възпроизведете и да направите еквивалентни промени на други устройства.

Това става доста сложно: освен правилната логика на дневник/отговор, ще искате да обедините излишните промени и периодично да свивате дневника в пълно копие на базата данни.

Може да ви е по-лесно да разработите решение, ако можете да използвате познанията за вашето приложение (Core Data трябва да реши проблема в общия случай). Например, можете да запазвате фактури като отделни файлове в облачния контейнер (текст, списък със свойства, XML, JSON, каквото и да е), като ги записвате при промени в базата данни и импортирате само такива, ако системата ви каже, че са създадени или променени.

В обобщение, вашият избор е или да мигрирате към Core Data, или да напишете сами решение за синхронизиране. Кое от тях е най-добро зависи от подробностите на вашето приложение.

person benzado    schedule 15.11.2011