Cfstringref Impostazione di un valore per ""
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.
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