【问题标题】:No visible interface for NSAttributedString initWithRTF on Mac OS XMac OS X 上的 NSAttributedString initWithRTF 没有可见界面
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2013-12-03
    • 2012-09-23
    • 2011-06-17
    • 2015-11-26
    • 2023-04-02
    • 2012-06-08
    相关资源
    最近更新 更多