gpt4 book ai didi

swift - tvOS 13 顶架 - NSExtensionPrincipalClass `product_module_name.ContentProvider` 必须实现至少一个公共(public)协议(protocol)

转载 作者:行者123 更新时间:2023-12-03 23:10:27 31 4
gpt4 key购买 nike

从使用 TVTopShelfProvider 迁移 tvOS 分段式顶架,现已弃用,改为 TVTopShelfContentProvider导致 NSException发射时。

错误,NSExtensionPrincipalClass product_module_name.ContentProvider must implement at least one public protocol建议我的类(class) ContentProvider ,必须使用协议(protocol)。 TVTopShelfContentProvider是一个类而不是一个协议(protocol)。

看苹果的example project你可以看到它们也只是 TVTopShelfContentProvider 的子类.

最小的例子:

class ContentProvider: TVTopShelfContentProvider {

override func loadTopShelfContent(completionHandler: @escaping (TVTopShelfContent?) -> Void) {
requestMediaItemsIfNeeded {
let itemCollection: TVTopShelfItemCollection = TVTopShelfItemCollection(items: self.items)
itemCollection.title = "Collection Title"

let sectionedContent: TVTopShelfSectionedContent = TVTopShelfSectionedContent(sections: [itemCollection])
completionHandler(sectionedContent)
}
}

}

顶级货架相关的 Info.plist 值:
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.tv-top-shelf</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).ContentProvider</string>
</dict>

我是否缺少需要添加/更新的项目配置值?创建了一个新的最小顶架扩展,这些看起来是唯一需要的更改。

最佳答案

要迁移顶级图像实现以支持全屏 Assets ,应更新两件事:

  • 更新 Info.plist。注意更新NSExtensionPointIdentifier

  • Info.plist
  • 更新 productType到“com.apple.product-type.app-extension”
    我在 Xcode 中找不到这个设置,所以我在文本编辑器中打开项目并搜索 productType
  • 关于swift - tvOS 13 顶架 - NSExtensionPrincipalClass `product_module_name.ContentProvider` 必须实现至少一个公共(public)协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58504864/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com