Atividade
O comando a seguir, execute enquanto trabalha com o iCloud com aplicativos (como Smultron 4 e TextEdit) compatíveis com o Mobile Documents -
sudo opensnoop -n ubd
- mostra arquivos locais abertos pelo daemon de onipresença. Os arquivos incluem bancos de dados, um banco de dados por ponto. Um diretório por ponto no seguinte caminho:
~/Library/Application Support/Ubiquity
Tipos de dados
Se você deseja medir o progresso, decida quais tipos medir:
- Dados principais
- documentos
- valor chave.
Economias, progresso e medição
Dados principais
… Os arquivos de log de alterações, e não o arquivo de armazenamento, são carregados no iCloud e baixados para cada um dos outros dispositivos de um usuário. Quando um log de alterações chega de outro dispositivo conectado à mesma conta do iCloud, o Core Data atualiza a cópia local do aplicativo do banco de dados SQLite, com base no log de alterações recebido. O iCloud e o Core Data garantem que cada banco de dados local seja atualizado com o mesmo conjunto de alterações. ...
Considere: sem interpretar o conteúdo de um log de alterações, valerá a pena medir o progresso do upload do arquivo de log?
Documentos
Na Biblioteca do desenvolvedor para Mac:
Os aplicativos baseados em documentos podem adotar o salvamento automático, e seus documentos são salvos automaticamente em momentos apropriados.
Além disso:
Estratégias automáticas de economia de dados aliviam o usuário
… Pontos apropriados no seu código onde qualquer alteração relacionada ao usuário deve ser salva e gravada automaticamente no disco. ...
Alguns momentos apropriados em que você pode salvar dados do usuário incluem automaticamente o seguinte:
- Quando o usuário fecha a janela do aplicativo ou sai do aplicativo (applicationWillTerminate :)
- Quando o aplicativo é desativado (applicationWillResignActive :)
- Quando o usuário oculta seu aplicativo (applicationWillHide :)
- Sempre que o usuário faz uma alteração válida nos dados do seu aplicativo
O último item significa que você tem a liberdade de salvar os dados do usuário a qualquer momento que fizer sentido. Por exemplo, se o usuário estiver editando os campos de um registro de dados, você poderá salvar cada valor do campo conforme for alterado ou poderá aguardar e salvar todos os campos quando o usuário exibir um novo registro. Fazer esses tipos de alterações incrementais garante que os dados estejam sempre atualizados, mas também exige um gerenciamento mais refinado do seu modelo de dados. ...
Considere: essas economias podem ser tão frequentes e as quantias tão pequenas que essa medição não vale a pena.
item-info.db
Eu brinquei com o SQLite Database Browser para procurar no item-info.db
banco de dados o par que parece ser o meu Mac local. Como eu suspeitava, o aplicativo só podia navegar enquanto o sistema não estava usando o banco de dados - dois segundos depois de usar a Visualização para editar um Untitled.png
no iCloud, eu não conseguia mais navegar no banco de dados ... e assim por diante.
Referências
Guia de Design do iCloud
Guia de programação de aplicativos para Mac : o design principal do aplicativo: