2016-04-28 52 views
0

我正在爲iOS項目使用SwiftyDropbox庫,遞歸獲取文件夾列表以及檢查文件是否爲照片或視頻。Dropbox 2.0 Swift API:如何獲取媒體元數據

 client.files.getMetadata(path: fileURL, includeMediaInfo: true).response { response, error in 

     if let file = response as? Files.FileMetadata { 
      if file.mediaInfo != nil { 

      // ??? how to get file.mediaInfo.metadata 
      // specifically, I need the mediaMetadata 

      } 
     } 
     } 

我可以看到file.mediaInfo(其中,如果存在的話,意味着元數據存在,但文件並沒有說明如何得到實際的元數據本身(具體尺寸的照片或持續時間觀看視頻) 。

我可以從file.mediaInfo的描述得到這個(和解析從返回的字符串),但是這哈克,而不是未來的安全。是否有其他方式來獲得這些數據?

這是我想從中獲取數據的類(在Files.swift中):

public class MediaMetadata: CustomStringConvertible { 
    /// Dimension of the photo/video. 
    public let dimensions : Files.Dimensions? 
    /// The GPS coordinate of the photo/video. 
    public let location : Files.GpsCoordinates? 
    /// The timestamp when the photo/video is taken. 
    public let timeTaken : NSDate? 
    public init(dimensions: Files.Dimensions? = nil, location: Files.GpsCoordinates? = nil, timeTaken: NSDate? = nil) { 
     self.dimensions = dimensions 
     self.location = location 
     self.timeTaken = timeTaken 
    } 
    public var description : String { 
     return "\(prepareJSONForSerialization(MediaMetadataSerializer().serialize(self)))" 
    } 
} 

回答

3

這裏有一個例子:

Dropbox.authorizedClient!.files.getMetadata(path: "/test.jpg", includeMediaInfo: true).response { response, error in 
    if let result = response as? Files.FileMetadata { 
     print(result.name) 

     if result.mediaInfo != nil { 
      switch result.mediaInfo! as Files.MediaInfo { 
      case .Pending: 
       print("Media info is pending...") 
      case .Metadata(let mediaMetadata): 
       print(mediaMetadata.dimensions) 
       print(mediaMetadata.location) 
       print(mediaMetadata.timeTaken) 
      } 
     } 
    } else { 
     print(error!) 
    } 
} 
相關問題