Вопрос

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

Вот код

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

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

Это было полезно?

Решение

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

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

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

Но поскольку типы CfStringRef и NSStrings Bridged не могут просто использовать 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...
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top