2017-04-20 14 views
0

Now Playingアイテムのプロパティの数を取得しようとしています。 パーアップルのドキュメント:MPMediaItem(Swift 3)でenumerateValues(forProperties:using :)メソッドを使用する方法

いつでもアプリは、プロパティキーのセットに対して列挙、複数のプロパティにアクセスするには、個々のプロパティを取得するよりも効率的です。

だから私は彼らの方法を使用してみました:

func enumerateValues(forProperties properties: Set<String>, 
       using block: @escaping (String, Any, UnsafeMutablePointer<ObjCBool>) -> Void) 

をしかし、私はちょうどそれが使用されるべきかを理解することはできません。

マイコード:

//MARK: Properties 
var allProperties: [String: Any] 
var albumTitle: String? 
var albumArtist: String? 
var title: String? 
var artist: String? 
var artwork: UIImage? 
var genre: String? 
var lyrics: String? 
var releaseDate: Date? 
var playbackDuration: TimeInterval? 
var rating: Int? 
var assetURL: URL? 
var isExplicitItem: Bool? 
var isCloudItem: Bool? 
var hasProtectedAsset: Bool? 

let propertiesSet: Set<String> = [MPMediaItemPropertyAlbumTitle, 
          MPMedia​Item​Property​Album​Artist, 
          MPMediaItemPropertyTitle, 
          MPMedia​Item​Property​Artist, 
          MPMediaItemPropertyArtwork, 
          MPMedia​Item​Property​Genre, 
          MPMedia​Item​Property​Lyrics, 
          MPMedia​Item​Property​ReleaseDate, 
          MPMedia​Item​Property​Playback​Duration, 
          MPMedia​Item​Property​Rating, 
          MPMedia​Item​Property​Asset​URL, 
          MPMediaItemPropertyIs​Explicit, 
          MPMediaItemPropertyIs​Cloud​Item, 
          MPMediaItemPropertyHas​Protected​Asset] 

func getAllMetadata() { 
    allProperties = nowPlaying?.enumerateValues(forProperties: propertiesSet, 
           using: //No idea what to put here 
     -> [String: Any]) 
} 

どのようにそれを正しく使用するには?

答えて

0

最後に、私はそれをどのように使用するかを考え出しました。だから私は再度書いた私の機能は以下のとおりです。

func getAllMetadata() { 
    var allProperties: [String: Any] = [:] 
    nowPlaying?.enumerateValues(forProperties: propertiesSet, using: {key,value,_ in allProperties[key] = value}) 

    albumTitle = allProperties["albumTitle"] as? String 
    //and so on 
} 

このドキュメントは、適切な使用法を理解するために私を助け - https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html

関連する問題