Swift 5.1 NSInternalInconsistencyException 错误
Posted
技术标签:
【中文标题】Swift 5.1 NSInternalInconsistencyException 错误【英文标题】:Swift 5.1 NSInternalInconsistencyException error 【发布时间】:2020-01-10 16:01:15 【问题描述】:我正在更新旧的媒体播放器项目 (Swift 3) 并出现奇怪的错误:
由于未捕获的异常而终止应用程序 'NSInternalInconsistencyException',原因:'不支持的操作方法 签名。必须返回 MPRemoteCommandHandlerStatus 或采取 完成处理程序作为第二个参数。
我在此代码上收到此错误:
UIApplication.shared.beginReceivingRemoteControlEvents()
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.previousTrackCommand.addTarget(self, action: #selector(handlePrevTrack))
@objc func handlePrevTrack()
if playListEpisodes.count == 0
return
let currentEpisodeIndex = playListEpisodes.firstIndex (ep) -> Bool in
return self.episode.title == ep.title && self.episode.author == ep.author
guard let index = currentEpisodeIndex else return
let nextEpisode:Episode
if index == 0
nextEpisode = playListEpisodes[playListEpisodes.count - 1]
else
nextEpisode = playListEpisodes[index - 1]
self.episode = nextEpisode
Swift 5.1 发生了什么变化?
【问题讨论】:
【参考方案1】:根据文档,previousTrackCommand
选择器应将MPRemoteCommandEvent
作为第一个参数并返回MPRemoteCommandHandlerStatus
:
func addTarget(handler: (MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus) -> Any
所以你的handlePrevTrack
函数应该声明为:
@objc func handlePrevTrack(_ event: MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus
...
【讨论】:
以上是关于Swift 5.1 NSInternalInconsistencyException 错误的主要内容,如果未能解决你的问题,请参考以下文章
Swift 5.1 NSInternalInconsistencyException 错误
(Swift Playground 模板)使用 Swift 5.1 编译的模块不能被 Swift 5.1.3 编译器导入
使用 Swift 5.1 编译的模块不能被 Swift 5.1.2 编译器导入
Facebook Graph API GET 请求 - 应包含“字段”参数(Swift,Facebook SDK v4.5.1)
Facebook Graph API GET 请求 - 应包含“字段”参数(Swift,Facebook SDK v4.5.1)