2012-02-14 3 views
0

Я получаю ошибку кастинга. Мое приложение читает текстовый файл с веб-страницы с использованием метода stringWithContentsOfURL. Я хочу разобрать отдельные строки на отдельные компоненты. Это фрагмент кода.Ошибка кода несовместимого типа XCODE

int parameterFive_1 = 0; 
    parameterFive_1_range = NSMakeRange(0,10) 
    lines     = [response componentsSeparatedByString:@"\r"]; 

    parameterFive_1 = CFStringGetIntValue([[lines objectAtIndex:i] substringWithRange:parameterFive_1_range]); 

Я получаю следующее сообщение об ошибке: "неявное преобразование указателя Objective-C к 'CFStringRef' (он же 'Const структура __CFString *') недопустимую с ARC"

Я думал, что это может быть вариантом компилятора, но изменение его по умолчанию не влияет. Может ли кто-нибудь дать представление?

+0

Возможный дубликат [приведение типа указателя Objective-C 'NSString *' к типу C-типа 'CFStringRef' (aka 'const struct __CFString *') требует мостового литья] (http://stackoverflow.com/questions/ 6725558/литой из-Objective-C-указатель типа NSString-к-с-указатель типа cfstringref-а) – Caleb

ответ

2

Просто бросить NSString * в CFStringRef удовлетворить АРК:

parameterFive_1 = CFStringGetIntValue((__bridge CFStringRef)[[lines objectAtIndex:i] substringWithRange:parameterFive_1_range]); 

__bridge ключевое слово здесь позволяет ARC знать, что он не должен передавать право собственности на строку.

Смежные вопросы