今天扩展无法继承CoreMedia权限

问题描述 投票:63回答:15

我正在尝试将Swift中的Today Extension添加到我的Objective-C应用程序中。我一直在调试器日志中收到此消息:Failed to inherit CoreMedia permissions from 3005: (null)。数字ex。 3005每次都不同。我正在从小部件中读取NSUserDefaults,但我正在应用程序本身阅读/写作。我的TodayViewController中唯一的代码如下:

override func viewDidLoad() {
    super.viewDidLoad()

    let formatter = NSNumberFormatter()
    formatter.numberStyle = .CurrencyStyle
    totalLabel.text = formatter.stringFromNumber(0)
    coinsLabel.text = formatter.stringFromNumber(0)

    formatter.maximumFractionDigits = 0
    billsLabel.text = formatter.stringFromNumber(0)

}

func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
    return UIEdgeInsetsMake(8.0, 16.0, 8.0, 16.0)
}

func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {
    // Perform any setup necessary in order to update the view.

    // If an error is encountered, use NCUpdateResult.Failed
    // If there's no update required, use NCUpdateResult.NoData
    // If there's an update, use NCUpdateResult.NewData

    completionHandler(NCUpdateResult.NewData)
}
swift ios-app-extension ios8-today-widget
15个回答
49
投票

我相信当您创建应用程序扩展时,“无法继承NNNN的CoreMedia权限”警告与App Groups有关。您的应用程序和应用程序扩展都需要打开应用程序组功能并使用相同的应用程序组容器ID(例如:group.com.yourdomain.yourappname)。应用程序组用于允许多个应用程序访问共享容器,并允许应用程序之间进行额外的进程间通信。


0
投票

我在运行扩展程序时遇到了同样的问题。就我而言,它是通过在真实设备中运行扩展来解决的。


0
投票

我发现如果您使用的是StoryBoard,则需要进入info.plist并删除属性NSExtensionPrincipalClass。之后,扩展开始加载就好了。


0
投票

我也遇到了这个问题。对我来说问题是我在模拟器上一次运行两个程序。在我停止其中一个之后,错误消息消失了。希望能帮助到你。


0
投票

这是我对此错误消息的体验。我有一个带有4个ViewControllers的故事板。我对所有这些都进行了重构提取,所以现在我有5个故事板,其中4个有视图控制器,原始的“主要”,其中只有故事板引用。

嗯......那很糟糕。不要那样做。

当我将原始故事板保存在原始故事板文件中时,一切都有效,所以我没有重构其中一个。


-3
投票

确保[[NSUserDefaults alloc] initWithSuiteName:APP_GROUP]的参数与您定义的组名匹配。


-7
投票

这是模拟器的问题,尝试一些真实的设备。


15
投票

首先,点击Assets.xcassets

First, Click on Assetes.xcassets

其次,单击Target Membership,检查您的应用和小部件,以允许小部件访问您的资源。

Second, Click on Target Membership

之后,再次运行您的Widget,它现在应该可以正常工作。


13
投票

我有相同的日志输出。清洁(Cmd + Shift + K)为我解决了它。


8
投票

我也遇到了这个问题,我解决的唯一解决方案是在故事板上添加每个对象的垂直和水平约束。


6
投票

检查今天扩展的mainstoryboard,启用了具有“是初始视图控制器”选项的viewcontroller。


4
投票

非常误导性的错误。如上所述。选择视图控制器并添加缺少的约束或向自己添加约束以解决问题。

enter image description here


3
投票

在完成了这个问题的答案中提到的大部分内容并且仍然在今天的小部件中出现错误之后 - 我发现了一些对我有用的东西。

打开小部件目标Build Settings并搜索Always Embed Swift标准库。选择是。

希望这对你有用,如果没有其他任何东西没有帮助


1
投票

这打击了我,因为我在我的视图控制器中有一个自定义的合并init(nibName:bundle:coder:)方法,并且已经像这样实现了initWithCoder来满足Swift:

required init?(coder aDecoder: NSCoder) {
    self.init(nibName: nil, bundle: nil, coder: aDecoder)
}

我通过将该实现调用super.init(coder:)来修复该问题:

required init?(coder aDecoder: NSCoder) {
    // [...setting some variables...]
    super.init(coder: aDecoder)
}

0
投票

我通过以下方式解决了我的问题:为容器和扩展应用打开应用组。并将所有隐藏的UIKit控件删除为UILabel, UIView, ...

© www.soinside.com 2019 - 2024. All rights reserved.