Pergunta

Eu gostaria de usar um iCloud, mas quando compilo o aplicativo no simulador iOS 4.3 ele trava.

dyld: Símbolo não encontrado: _OBJC_CLASS _ $ _ NSMetadataQuery

O que devo fazer para que funcione no iOS 3, 4 e 5?

Foi útil?

Solução

Esta API foi lançada com o ios5, então você não pode executá-la no simulador 4 ou inferior, mas para postagem, você pode definir o destino mínimo de implantação da família ios que ela deve suportar.

Outras dicas

meu sentimento é:

Onde NSMetadataQuery mudou para id: ex

normal: - (void) loadData: (NSMetadataQuery *) consulta; mude para: - (void) loadData: (id) query;

normal: consulta @property (reter, não atômica) NSMetadataQuery *; mude para: consulta de id @property (reter, não atômico);

e verifique o iCloud disponível:

if ([[NSFileManager defaultManager] respondsToSelector:@selector(URLForUbiquityContainerIdentifier:)]) {
        NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
        if (ubiq) {
            // Code for access iCloud here
        }
    }

Quando usar NSMetadataQuery:

id _query = [[NSClassFromString(@"NSMetadataQuery") alloc] init];
// Some code here
[_query startQuery];

Divirta-se (^_^)

A maneira usual seria compilá-lo com o iOS 5 SDK e definir o destino de implantação para a versão mais antiga do iOS com a qual gostaria de trabalhar.Cabe a você verificar em tempo de execução quais classes e métodos estão disponíveis para o sistema atual.Um usuário no iOS 4, por exemplo, não será capaz de usar funções que vêm apenas com o iOS 5.

Para verificar a disponibilidade das aulas faça:

if ( NSClassFromString(@"NSMetadataQuery") != nil ) {
  //do stuff with NSMetadataQuery here
}

Para verificar a disponibilidade dos métodos, faça:

if ( [myObject respondsToSelector:@selector(doSomething)] ) {
  //call doSomething on myObject
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top