Это немного странно - потому что я знаю канонический ответ на него. Это проблема, которую я ожидаю увидеть на iOS (где NSAttributedString не имеет initWithRTF), но я вижу это на Mac OS X на данный момент.Нет видимого интерфейса для NSAttributedString initWithRTF в Mac OS X
Код выглядит следующим образом:
+(NSString*)stringFromRTFData:(NSData*)rtfData
{
#if TARGET_OS_IPHONE
return nil; //need to extract string from RTF for iOS
#else
NSAttributedString* intermediate = [[NSAttributedString alloc]initWithRTF:rtfData documentAttributes:nil];
return [intermediate string];
#endif
}
Как вы можете видеть, я ожидаю, строка будет возвращена, если код скомпилирован для Mac OS X, и ноль должны быть возвращен для прошивки (только потому, что я не надоело вводить код для iOS. В конце концов!)
Для большинства моих проектов этот код работает отлично - но на двух из них (которые являются импортерами spotlight и quicklook) я получаю ошибку 'Нет видимого @interface для' NSAttributedString 'объявляет селектор' initWithRTF: documentAttributes: '
Кроме того, если я попытаюсь найти документацию для этого в Xcode, он вернет документацию iOS для NSAttributedString, а не документацию по OS X для NSAttributedString - предположив, что он считает, что этот плагин для iOS. Однако проверка настроек сборки показывает, что этот проект установлен на OS X 10.10 с архитектурой 64-битной Intel и поддерживаемой платформой OS X.
Что дает? Может ли кто-нибудь увидеть мою ошибку?
Спасибо за любую помощь - и счастливое Рождество для всех вас.
Вы '# import'ing Cocoa или AppKit в затронутой единицы перевода? Метод '-initWithRTF: documentAttributes:' находится в категории в 'NSAttributedString', которая является частью AppKit. (Сам класс 'NSAttributedString' является частью фонда, поэтому он может быть объявлен, даже если его категория не является.) –
Grr! Иногда я мог задушить себя. Положите это как ответ, и я дам вам галочку! – headbanger