2013-12-02 3 views
1

Я работаю с приложением, которое создает NSAttributedString из файла .rtf. Я тестировал это приложение на iOS 7 без проблем. Однако, когда я проверил это приложение на IOS 6, я получаю эту ошибку:MutableAttributedString Работает в iOS 7, но не iOS 6

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteAttributedString initWithFileURL:options:documentAttributes:error:]: unrecognized selector sent to instance 0x9a77010'

Вот код, у меня есть:

NSError *error; 
NSURL *stringURL = [[NSBundle mainBundle] URLForResource:@"Text" withExtension:@".rtf"]; 
NSAttributedString *myAttributedText = [[NSAttributedString alloc] initWithFileURL:stringURL options:nil documentAttributes:nil error:&error]; 

ответ

4

От компании Apple Docs - NSAttributedString UIKit Additions Reference

initWithFileURL:options:documentAttributes:error: доступен только в iOS 7.0

EDIT: Как указано в комментариях

Если вы хотите, чтобы проверить, имеется ли на объекте или протокола (который наследуется от NSObject) селектор, то вы можете проверить с помощью [object respondsToSelector:@selector()] в этом случае

NSAttributedString *myAttributedText; 
if ([myAttributedText respondsToSelector:@selector(initWithFileURL:options:documentAttributes:error:)]) { 
    myAttributedText = [[NSAttributedString alloc] initWithFileURL:stringURL options:nil documentAttributes:nil error:&error]; 
} 
else { 
    // Init some other way 
} 
+1

Вы можете, конечно, проверить, поддерживается ли новый интерфейс, и, если нет, использовать резервный подход. –

+0

Хорошо, @Evan это имеет смысл. Итак, возникает вопрос: как загрузить файл 'rtf' в iOS 6? –

+0

@ Коди, к сожалению, это не то, с чем мне приходилось работать, поэтому я не уверен в возможностях. Лучше всего будет искать библиотеку, которая это сделает. [Статья в StackOverflow, которая может помочь] (http://stackoverflow.com/questions/10920678/ios-equivalent-to-macos-nsattributedstring-initwithrtf) – Evan

0

, что происходит, потому что метод вы звоните

initWithFileURL:options:documentAttributes:error:

был представлен только в iOS 7.0.

Вы можете проверить IOS 6.1 IOS 7.0 API Diffs здесь: iOS 6.1 to iOS 7.0 API Differences

И здесь, в частности, вы можете увидеть NSAttributedString UIKit Additions Class Reference

Вызов метода, который не существует заставит ваше приложение авария. Вы должны установить цель развертывания в 7.0 или использовать что-то вроде ifdefs, чтобы избежать вызова этого метода в более ранних версиях (reference link here).

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