在Mac OS X上没有可见的NSAttributedString initWithRTF接口

时间:2014-12-26 11:12:58

标签: macos cocoa quicklook spotlight

这个有点奇怪 - 因为我知道它的规范答案。这是我期望在iOS上看到的问题(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返回nil(仅仅因为我还没有把代码放入iOS中。我会最终!)

对于我的大多数项目,这段代码完美无缺 - 但是其中两个(聚光灯和quicklook导入器)我得到错误'没有可见@interface for'NSAttributedString'声明了选择器'initWithRTF:documentAttributes:'< / p>

此外,如果我尝试在Xcode中查找此文档,则返回NSAttributedString的iOS文档,而不是NSAttributedString的OS X文档 - 建议它认为此插件适用于iOS。但是,检查构建设置会显示此项目设置为OS X 10.10,其架构为64位Intel和OS X支持的平台。

是什么给出的?任何人都可以看到我的错误吗?

感谢您的帮助 - 祝大家圣诞快乐。

1 个答案:

答案 0 :(得分:3)

您需要#import Cocoa或AppKit头文件。虽然NSAttributedString是Foundation的一部分,但-initWithRTF:documentAttributes:方法不是。它是AppKit中NSAttributedString类别的一部分。