Pergunta

Eu tenho uma variável que é um CFStringRef e eu executar uma verificação para certificar-se de sua não 1 valor específico.Se for, então eu quero defini-lo para o NSString equivalente @""

Aqui está o código

CFStringRef data = = CFDictionaryGetValue(dict, kABPersonAddressStateKey);

NSComparisonResult result = [(NSString *)data compare:element options:compareOptions];
if(NSOrderedAscending == result) {
    // Do something here...
}
else if (NSOrderedSame == result) {
    // Do another thing here if they match...
    data = "";
}
else {
    // Try something else...
}

Assim, no caso de outro bloco, que eu quero defina-o para "", mas Xcode avisa-me que é um erro de tipo de ponteiro.

Foi útil?

Solução

CFStringRef é imutável objeto, então você deve criar uma nova instância com valor diferente:

data = CFStringCreateWithCString (NULL, "", kCFStringEncodingUTF8);

E lembre-se de que você precisa para liberar o valor.

Mas desde CFStringRef e NSStrings tipos de ligação gratuita ponte, você pode apenas usar NSString no seu código (que provavelmente faz com que seja mais fácil de compreender e apoiar mais tarde):

NSString *data = (NSString*)CFDictionaryGetValue(dict, kABPersonAddressStateKey);

NSComparisonResult result = [(NSString *)data compare:element options:compareOptions];
if(NSOrderedAscending == result) {
    // Do something here...
}
else if (NSOrderedSame == result) {
    // Do another thing here if they match...
    data = @"";
}
else {
    // Try something else...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top