【发布时间】:2018-05-16 09:21:17
【问题描述】:
我正在开发一个能够播放歌曲播放列表的音乐应用程序,我的项目中有两种数据类型代表一首歌曲; “Track”是 NSManagedObject 的,用于用户保存在设备上的歌曲,“JSONTrack”表示可从 json Web 服务解码的歌曲。用户应该能够将这两种类型添加到播放列表数组中。如何使用 Swift 实现这一点,为不同的数据类型创建一个数组并在该数组上工作: 我当前处理其中一种数据类型的代码如下所示:
var playlistTracks = [Track]()
@objc fileprivate func handlePrevTrack() {
if playlistTracks.isEmpty {
return
}
let currentTrackIndex = playlistTracks.index { (tr) -> Bool in
return self.track?.trackTitle == tr.trackTitle && self.track?.albumTitle == tr.albumTitle
}
guard let index = currentTrackIndex else { return }
let prevTrack: Track
if index == 0 {
let count = playlistTracks.count
prevTrack = playlistTracks[count - 1]
} else {
prevTrack = playlistTracks[index - 1]
}
self.track = prevTrack
}
@objc func handleNextTrack() {
if playlistTracks.count == 0 {
return
}
let currentTrackIndex = playlistTracks.index { (tr) -> Bool in
return self.track?.trackTitle == tr.trackTitle && self.track?.albumTitle == tr.albumTitle
}
guard let index = currentTrackIndex else { return }
let nextTrack: Track
if index == playlistTracks.count - 1 {
nextTrack = playlistTracks[0]
} else {
nextTrack = playlistTracks[index + 1]
}
self.track = nextTrack
}
处理下一个和上一个选择。我想对由两种不同数据类型表示的两种不同类型的歌曲执行相同的操作。
【问题讨论】: