CFStringRef устанавливает значение в "" - PullRequest
1 голос
/ 12 мая 2011

У меня есть переменная, которая является CFStringRef, и я выполняю проверку, чтобы убедиться, что это не 1 конкретное значение.Если это так, то я хочу установить в NSString эквивалент @ ""

Вот код

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

Так что в блоке if else я хочу установить его в ""но XCode предупреждает меня, что это недопустимый тип указателя.

1 Ответ

3 голосов
/ 12 мая 2011

CFStringRef является неизменным объектом, поэтому вы должны создать новый экземпляр с другим значением:

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

И помните, что вам нужно освободить это значение.

Но так как типы CFStringRef и NSStrings являются платными- без мостов, вы можете просто использовать NSString в своем коде (что, вероятно, облегчит его понимание и поддержку позже):

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