Interface Builder 文件中的未知类 FBSDKLoginButton

Posted

技术标签:

【中文标题】Interface Builder 文件中的未知类 FBSDKLoginButton【英文标题】:Unknown class FBSDKLoginButton in Interface Builder file 【发布时间】:2015-05-18 19:20:27 【问题描述】:

我的全新项目遇到了一个非常令人沮丧的构建问题。我正在尝试集成 Facebook ios SDK,但由于某种原因,我遇到了一些奇怪的错误。尝试使用 FBSDKLoginKit 在情节提要视图上显示 FBSDKLoginButton 时。

当我尝试#import <FBSDKLoginKit/FBSDKLoginKit.h> 时,第一个提示是这个“错误”(但它只在编辑器中显示为错误;它仍然可以正常编译):

“无法构建模块 FBSDKLoginKit。”

奇怪的是,这个“错误”在修改了一些与模块相关的构建设置后消失了,即使我将它们设置回原来的值。

另外有趣的是,如果我从视图控制器中显式引用 FBSDKLoginButton 类(例如以编程方式添加按钮),那么基于情节提要的实例化就可以正常工作。所以我猜这一定是链接器问题之类的,但我承认我不是这方面的专家。

Facebook SDK 文档都没有提到我能找到的这个问题,这很奇怪,因为就像我说的那样,这是一个全新的干净项目。

【问题讨论】:

【参考方案1】:

我的错,the documentation does mention this,建议通过引用application didFinishLaunchingWithOptions: 中的FBSDKLoginButton 类来解决这个问题。 (坦率地说,你在哪里引用它并不重要,所以在哪里感觉最舒服。对我来说,视图控制器更有意义。)

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    // Override point for customization after application launch.
    [FBSDKLoginButton class];
    ...
    return YES;

【讨论】:

我想你可以接受你的答案,以便将来向其他人表明。 如何在 Swift 中添加这个? @Saty:只需调用 FBSDKLoginButton() -> 会弹出警告(“初始化程序的结果未使用”),但它可以工作! 如果你说 _ = FBSDKLoginButton() 你可以消除错误 @devios,但是如果我在情节提要中声明它,为什么它不知道使用了该库?很蠢【参考方案2】:

对于 Swift 使用 FBSDKLoginButton.superclass()

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
    // Override point for customization after application launch.

    FBSDKLoginButton.superclass()

    return true

【讨论】:

以上是关于Interface Builder 文件中的未知类 FBSDKLoginButton的主要内容,如果未能解决你的问题,请参考以下文章

Interface Builder 文件中的未知类 MHRotaryKnob

解析错误:Interface Builder 文件中的未知类 PFImageView

Interface Builder 文件中的未知类 FBSDKLoginButton

Interface Builder 文件 Swift/Parse 错误中的未知类 PFQueryTableView

Interface Builder 文件中的未知类 PFImageView

Interface Builder 文件中的未知类 FirstViewController