Question

J'ai une variable qui est un CFStringRef et j'effectue un chèque pour m'assurer que ce n'est pas 1 valeur spécifique. Si c'est le cas, je veux le régler sur l'équivalent nsstring de @ ""

Voici le code

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

Donc, dans le bloc if else, je veux le régler sur "" mais Xcode m'avait averti qu'il s'agit d'un type de pointeur invalide.

Était-ce utile?

La solution

CfStringRef est un objet immuable, vous devez donc créer une nouvelle instance avec une valeur différente:

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

Et rappelez-vous que vous devez libérer cette valeur.

Mais comme les types CFStringRef et NSSrings sont pontés sans frais, vous pouvez simplement utiliser NSString dans votre code (ce qui facilitera la compréhension et le soutenir plus tard):

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...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top