19

Today 扩展不会出现在 Swift 应用程序中,但它会出现在 Objective C 应用程序中。

我所做的是在情节提要上为 swift 和客观的 c 应用程序添加带有一些内容的 UILabel。

它在我运行 Objective C 应用程序时出现,但在我执行 Swift 应用程序时没有出现。

我在这里错过了什么吗?

4

4 回答 4

26

您可以注释掉提供的 init 方法。

//    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
//        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
//        // Custom initialization
//    }

这将允许您的扩展程序正常运行。该问题似乎是由 Swift 和 Objective-C 之间不同的初始化程序行为引起的。删除上述初始化程序将从超类继承所有必需的初始化程序。

在苹果开发者论坛上找到该解决方案供您参考。

注意:您可能必须对Clean and Build您的项目执行此操作之前所做的更改才会有任何影响

该扩展实际上正在崩溃,并出现如下错误:

fatal error: use of unimplemented initializer 'init(coder:)' for class 'com_blabla_blabla_MyTodayExtension.TodayViewController'

这表明另一种选择是实施:

init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
    // Custom initialization here
}

如果您想保留进行自定义初始化的能力。

于 2014-06-06T20:54:20.717 回答
3

应用程序扩展目标必须在其架构构建设置中包含 arm64 (iOS) 或 x86_64 架构 (OS X)。

请参阅Apple 的文档

于 2014-09-24T09:07:03.553 回答
2

Xcode6 is beta and this is a bug with it, you will have to wait for a new release.

于 2014-06-06T05:43:58.643 回答
2

对我来说,问题是扩展程序的部署目标设置为与我的应用程序目标不同的版本。您应该确认扩展的目标设置正确,因为它可能针对不同的版本。

在此处输入图像描述

于 2015-10-26T22:54:20.420 回答