Xcode12;新的“子类 MPMediaItem 必须实现 -valueForProperty”错误
Posted
技术标签:
【中文标题】Xcode12;新的“子类 MPMediaItem 必须实现 -valueForProperty”错误【英文标题】:Xcode12; New “Subclass MPMediaItem must implement -valueForProperty” error 【发布时间】:2020-09-18 06:18:38 【问题描述】:刚刚从 Xcode 11/ios13 的最新版本更新到 Xcode 12.0,并且在 AppDelegate 中出现错误:Thread 1: "Subclass MPMediaItem must implement -valueForProperty: defined in [MPMediaItem class]."
当应用程序启动时,我 MPMediaQuery 歌曲库并将它们存储到 Observable 对象中的 @Published 变量,如下所示:
@Published var songs = [MPMediaItem]()
init()
self.songs = MPMediaQuery.songs().items
稍后当我想访问一个属性时,我会这样做:
Text(self.observableObject.songs[0].title)
我尝试将这些更改为使用.value(forProperty: "MPMediaItemPropertyTitle")
,但感觉不是在属性上使用字符串(然后Xcode会弹出Failed to produce diagnostic for expression; please file a bug report apple.
之类的错误)AFAIK,我没有在任何地方继承MPMediaItem并且我试过用谷歌搜索上面的错误,但没有成功。
有人知道发生了什么吗?
【问题讨论】:
有人找到解决这个问题的方法吗? 【参考方案1】:我不确定这对您的情况是否有用,但我最近遇到了一个类似的问题。
在我的情况下,我需要更改引发此崩溃的两件事:
当没有加载当前歌曲时,我正在初始化一个空的 MPMediaItem()
作为占位符。尝试访问此空实例上的属性(例如title
)时发生崩溃。删除空的MPMediaItem()
并实施不同的占位符方法后,问题就消失了。
为了在模拟器上测试音乐,我使用了DummyMediaQuery: MPMediaQuery
,它返回了一个DummyMediaItem: MPMediaItem
的数组。在DummyMediaItem
课程中我做了:
final class DummyMediaItem: MPMediaItem
private let _artist: String
override var artist: String return _artist
private let _title: String
override var title: String return _title
// and so on...
// fix: crash in iOS 14
override func value(forProperty property: String) -> Any?
return nil
【讨论】:
以上是关于Xcode12;新的“子类 MPMediaItem 必须实现 -valueForProperty”错误的主要内容,如果未能解决你的问题,请参考以下文章