【发布时间】:2015-02-23 17:15:57
【问题描述】:
这个有点奇怪 - 因为我知道它的规范答案。这是我希望在 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:'
此外,如果我尝试在 Xcode 中查找此文档,它会返回 NSAttributedString 的 iOS 文档,而不是 NSAttributedString 的 OS X 文档 - 表明它认为此插件适用于 iOS。然而,检查构建设置显示该项目设置为 OS X 10.10,具有 64 位 Intel 架构和支持的 OS X 平台。
什么给了?谁能看到我的错误?
感谢您的帮助 - 祝大家圣诞快乐。
【问题讨论】:
-
您在受影响的翻译单元中是
#importing Cocoa 还是 AppKit?-initWithRTF:documentAttributes:方法属于NSAttributedString的一个类别,它是 AppKit 的一部分。 (NSAttributedString类本身是 Foundation 的一部分。因此,即使它的类别不是,它也可能被声明。) -
呸!有时我可以扼杀自己。把它记下来作为答案,我会给你打勾!
标签: macos cocoa quicklook spotlight