2014-09-08 3 views
0

이 코드를 아트웍을 얻기 위해 사용하고 있지만 나에게 적합하지 않습니다. 이 코드에서 뭐가 잘못 됐어 .Suggest me. 감사합니다. . 당신이 확인하고 싶은 이유IOS :: MPMediaQuery Songsquery Artwork을 얻는 방법

MPMediaQuery *mySongsQuery = [MPMediaQuery songsQuery]; 

for (MPMediaItem *item in mySongsQuery.items) { 
    if (![[item valueForProperty:MPMediaItemPropertyIsCloudItem]boolValue]) { 

    CGSize artworkImageViewSize = CGSizeMake(40, 40); 
    MPMediaItemArtwork *artwork = [song valueForProperty:MPMediaItemPropertyArtwork]; 
    UIImage *image = [artwork imageWithSize:artworkImageViewSize]; 

    if (image) { 
     imgv_songImageView.image = image; 
    } else { 
     imgv_songImageView.image = [UIImage imageNamed:@"musicD-jpeg.png"]; 
    } 
    } 
} 

잘 모르겠어요 : 당신을 가정

MPMediaQuery *mySongsQuery = [MPMediaQuery songsQuery]; 
      NSArray *SongsList = [mySongsQuery collections]; 
      for (MPMediaItemCollection *SongsArt in SongsList) { 
NSArray *songs = [SongsArt items]; 
       for (MPMediaItem *song in songs) { 

        if ([(MPMediaItem*)item valueForProperty:MPMediaItemPropertyAssetURL] != nil) { 
        CGSize artworkImageViewSize = CGSizeMake(40, 40); 
        MPMediaItemArtwork *artwork = [song valueForProperty:MPMediaItemPropertyArtwork]; 
        UIImage * image = [artwork imageWithSize:artworkImageViewSize]; 
        if (image!= nil) 
        { 
         imgv_songImageView.image = image; 
        } 
        else 
        { 
         imgv_songImageView.image = [UIImage imageNamed:@"musicD-jpeg.png"]; 
        } 
     } 
    } 

답변

0

은 내가 컬렉션에 대한 필요성이 표시되지 않는 음악 라이브러리의 모든 곡을 반복하고 싶지 애셋 URL은 입력했지만 그대로 두었습니다.

+0

iCloud 송 확인 용입니다. 작동합니까? – Ravikumar

+0

대신'MPMediaItemPropertyIsCloudItem'을 사용하십시오. – sooper

+0

동일한 출력을 제공합니다. – Ravikumar

0

여기에 트랙을 가져 와서 사전 순으로 정렬하는 코드를 게시하고 있습니다. 그것 swift3로 작성된.

/// Get all the songs in the device and display in the tableview 
/// 
func getAllSongs() { 
    let query: MPMediaQuery = MPMediaQuery.songs() 
    let allSongs = query.items 

    allSongItems?.removeAll() 

    guard allSongs != nil else { 
     return 
    } 

    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 
      allSongItems?.append(trackInfo) 
      index += 1 
     } 
    } 

    // Sort the songs alphabetically 
    let sortedArray: [SongItem]? = allSongItems?.sorted { 
     $0.songName!.localizedCompare($1.songName!) == .orderedAscending 
    } 
    allSongItems?.removeAll() 
    if let arr = sortedArray { 
     allSongItems?.append(contentsOf: arr) 
    } 


}