Вот как вы можете заставить его распечатать каждый список воспроизведения и трек:
Каждый объект ITLibPlaylist
или ITLibMediaItem
содержит много информации о каждом элементе списка воспроизведения / мультимедиа. Чтобы получить только имя / заголовок каждого, вам нужно будет перебирать результаты, чтобы получить их.
В этом примере ниже печатается имя каждого имени списка воспроизведения.
print("\nPlaylists -")
for playlist in playlists {
print(playlist.name)
}
Что будет напечатано (например):
Playlists -
Library
Music
Для этого примера ниже , печатается название каждой дорожки.
print("\nTracks -")
for mediaItem in mediaItems {
print(mediaItem.title)
}
Что будет напечатано (например):
Tracks -
Ev'ry Time We Say Goodbye
My Favorite Things
But Not for Me
Summertime
Edit : Вот вторичное решение для вторичная проблема:
Перво-наперво, словарь должен быть инициализирован вместо использования typealias
.
typealias
создает только псевдоним для уже существующего типа, например
typealias NumberWithAlotOfDecimals = Double
let a: NumberWithAlotOfDecimals = 10.1
let b: Double = 10.1
оба будут a
и b
будут Double
, так как NumberWithAlotOfDecimals
- это просто псевдоним для Double
.
Вот как инициализировать:
//typealias tracks = [NSNumber:TrackInfo] // not this
var tracks = [NSNumber:TrackInfo]() // but this
Во-вторых, объекты, допускающие значение NULL, должны обрабатываться правильно
if let artistName = song.artist?.name {
trackInfo.artist = artistName
}
и
if let title = song.album.title {
trackInfo.album = title
}
if let location = song.location {
trackInfo.location = location
print("Location: \(location)")
}
вместо
if song.artist?.name != nil {
trackInfo.artist = song.artist?.name as! String
}
Пожалуйста, не используйте !
для принудительного развертывания обнуляемые объекты, поскольку это вызовет сбои во время выполнения, когда объект nil
.
Наконец, это способ сохранить значение ключа в словаре в Свифт.
let persistentID = song.persistentID
//tracks.updateValue(song.persistentID, trackInfo) // not this
tracks[persistentID] = trackInfo // this