你好,我正在尝试检索艺术家与MPMediaQuery在iOS与以下代码。
在我的ViewDidLenter code hereoad中
MPMediaQuery *query = [MPMediaQuery artistsQuery];
self.arrayOfArtist = [query collections];在我的cellForRowAtIndexPath中
cell.textLabel.text = [NSString stringWithFormat:@"%@",[[self.arrayOfArtist objectAtIndex:indexPath.row] valueForProperty:MPMediaItemPropertyArtist]];当我向NSLog查询时,我的arrayOfArtist计数大约是330。
然而,在我的UITableView中,它只显示NULL。
我有什么地方不对劲吗?
发布于 2013-01-29 03:04:22
你应该这样写:
cell.textLabel.text = [NSString stringWithFormat:@"%@",[[[self.arrayOfArtist objectAtIndex:indexPath.row] representativeItem] valueForProperty:MPMediaItemPropertyArtist]];发布于 2016-10-03 13:26:35
您可以使用代码来检索艺术家及其歌曲。
/// Get all artists and their songs
///
func getAllArtists() {
let query: MPMediaQuery = MPMediaQuery.artists()
let allArtists = query.collections
allArtistItems?.removeAll()
guard allArtists != nil else {
return
}
for collection in allArtists! {
let item: MPMediaItem? = collection.representativeItem
let artistName = item?.value(forKey: MPMediaItemPropertyArtist) as? String ?? "<Unknown>"
let artistId = item!.value(forProperty: MPMediaItemPropertyArtistPersistentID) as! NSNumber
let artist = Artist()
artist.name = artistName
artist.artistId = String(describing: artistId)
print("Artist name: \(artistName)")
// Get all songs of this Artist
let mediaQuery = MPMediaQuery.songs()
let predicate = MPMediaPropertyPredicate.init(value: artistId, forProperty: MPMediaItemPropertyArtistPersistentID)
mediaQuery.addFilterPredicate(predicate)
let song = mediaQuery.items
if let allSongs = song {
var index = 0
for item in allSongs {
let pathURL: URL? = item.value(forProperty: MPMediaItemPropertyAssetURL) as? URL
if pathURL == nil {
print("@Warning!!! Track : \(item) is not playable.")
} else {
let trackInfo = SongItem()
trackInfo.index = index
trackInfo.mediaItem = item
let title = item.value(forProperty: MPMediaItemPropertyTitle) as? String ?? "<Unknown>"
let artistName = item.value(forProperty: MPMediaItemPropertyArtist) as? String ?? "<Unknown>"
trackInfo.songName = title
trackInfo.artistName = artistName
trackInfo.isSelected = false
trackInfo.songURL = item.value(forProperty: MPMediaItemPropertyAssetURL) as? URL
artist.songs?.append(trackInfo)
index += 1
}
}
}
// Finally add the album object to albums array
allArtistItems?.append(artist)
}
print("Total Artist count: \(allArtistItems?.count)")
}发布于 2013-01-29 03:04:17
您需要获取artist属性,然后将其保存在数组中。如果您尝试在标准数组上使用valueForProperty方法,则该方法不能正常工作。
https://stackoverflow.com/questions/14568754
复制相似问题