Pergunta

Eu permitir que o usuário faça alterações às configurações na área de configurações do iphone.Durante a próxima rede de sincronização eu gostaria de enviar o usuário muda para o servidor.Mas apenas se as alterações são feitas.

Mas como eu sei quando o usuário tiver feito uma mudança dentro da área de configurações?

Se eu puder, eu gostaria de evitar uma opção de sempre enviar as informações, independentemente se mudou ou não, ou a obtenção de informações a partir do servidor de primeira e de atualização se diferente do padrão de usuário.

Há uma bela e elegante forma de resolver este problema?Obrigado por sua ajuda!

Uma semana mais tarde e sem respostas...Esta pergunta é muito difícil ou não faz qualquer sentido?

Foi útil?

Solução

Ah bobo de mim!Aqui vamos nós com uma forma elegante.Procurar AppPrefs na Apple Documentação dentro do XCode, e ela vai mostrar um exemplo de aplicativo que faz exatamente o que você quer fazer.Apenas compilar e executar!Ele faz uso da NSUserDefaultsDidChangeNotification.

Este é o código a ser utilizado para registar um observador:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(defaultsChanged:)
                                             name:NSUserDefaultsDidChangeNotification
                                           object:nil];

Velha resposta:

Isso não parece como se você pudesse ter uma data de modificação fora do NSUserDefaults.Até agora eu só posso pensar desta forma:

NSUserDefaults *previousDefaults = [someInstance previousUserDefaults];
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];

if([previousDefaults isEqualToDictionary:currentDefaults]) 
{
    [someOtherInstance sendModifiedUserDefaultsToServerWithDefaults:currentDefaults];
    [yetAnotherInstance saveModified]
}

Você tem que salvar os padrões do usuário a si mesmo como o dicionário para o disco quando o aplicativo é lançado o primeiro tempo:seus valores padrão.Então, toda vez que o aplicativo é aberto, você comparar os dois dicionários.Se eles

Outras dicas

Não é que a questão seja muito difícil, é só que não há uma maneira simples de fazer o que você está perguntando.NsuserDefaults não registra uma data "última modificada" para as configurações de cada aplicativo, pelo menos até onde posso dizer, por isso, se o usuário alterar algumas configurações usando o aplicativo de configurações, não há uma boa maneira de detectar que além de olharTodas as configurações.

Se você realmente precisar fazer isso, acho que sua melhor aposta é ler as configurações que você está interessado em sincronizar em alguma estrutura de dados e calculando algum tipo de hash ou soma de verificação com base nessa estrutura.Compare esse valor para o valor que você calculou a última vez que o aplicativo funcionou e sincronizar com o servidor, se for diferente.Você pode armazenar esse valor em NsuserDefaults, se quiser, mas certifique-se de não incluí-lo no cálculo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top