Domanda

Ho una variabile che è un cfstringref e eseguo un assegno per assicurarmi che il suo valore non specifico non sia 1.Se è quindi voglio impostarlo sull'equivalente NSString di @ ""

Ecco il codice

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...
}
.

Quindi nel blocco se altrimenti, voglio impostarlo su "" Ma Xcode mi avverte che è un tipo di puntatore non valido.

È stato utile?

Soluzione

CFStringref è un oggetto immutabile in modo da creare una nuova istanza con valore diverso:

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

e ricorda che è necessario rilasciare quel valore.

Ma poiché i tipi di cfstringref e NSstrings sono privi di telefonati a ponti, puoi semplicemente usare NSString nel tuo codice (che probabilmente ti rende più facile capire e supportarlo in seguito):

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...
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top