2017-01-29 31 views
0

我一直在使用Swift 2.3編寫音樂應用程序。我發現的麻煩是我的MPMediaQuery.artistsQuery()不提供所有的藝術家。使用iTunes,我已經追蹤到,如果「專輯是各種藝術家的歌曲彙編」被選中,那麼該藝術家將不會顯示在我的tableView中。例如,我用iTunes導入的其中一張CD(沒有出現在我的tableView中)是:Little River Band,Greatest Hits。 iTunes似乎認爲它是各種藝術家的彙編,雖然我不同意,但我仍然需要處理這種情況。iOS MPMediaQuery.artistsQuery()不會返回每個藝術家,如果編譯選中

var qryArtists = MPMediaQuery.artistsQuery() 
qryArtists.groupingType = MPMediaGrouping.Artist 

// Set the cell in the table 
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    // I am using the custom class that I created called: myCustomArtistTableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("artistIdCell", forIndexPath: indexPath) as! myCustomArtistTableViewCell 

    let currLoc = qryArtists.collectionSections![indexPath.section].range.location 
    let rowItem = qryArtists.collections![indexPath.row + currLoc] 

    cell.artistTitle.text = rowItem.items[0].artist 

    return cell 
} 

表中的所有部分都很好。我只是想念一些藝術家,包括:小河流樂隊。

此外,我的示例專輯中每首歌曲的藝術家標籤都包含字符串:Little River Band。我似乎無法弄清楚爲什麼這個藝術家和其他一些人被排除在外。非常感謝您的幫助。

回答

1

使用.songs()查詢,按artist分組,似乎包括所有藝術家(包括那些只有合輯歌曲的)。

斯威夫特3例子:

let query = MPMediaQuery.songs() 
query.groupingType = MPMediaGrouping.artist 

或者作爲MPMediaQuery擴展:

extension MPMediaQuery { 
    public static func artistsAll() -> MPMediaQuery { 
     let query = MPMediaQuery.songs() 
     query.groupingType = MPMediaGrouping.artist 
     return query 
    } 
} 

用法:

let query = MPMediaQuery.artistsAll() 
+0

謝謝!這樣可行!!! 在Swift 2.3中,我使用了: var qryArtists = MPMediaQuery.songsQuery() qryArtists.groupingType = MPMediaGrouping.Artist。 希望我知道它爲什麼有效。另外,希望我知道爲什麼iTunes決定爲我抽樣的Little River Band CD檢查「各種藝術家的歌曲彙編」。它的專輯歌手不會說「Various」。專輯標題包含短語:「最巨大的命中」。大西洋河段也是如此,其相冊標題包含:「最佳」。看起來像這樣應該更容易和更一致。 – James64

相關問題