2017-02-03 63 views
2

我現在有定製對象的數組如何將自定義對象的數組轉換爲字符串數組?

[GenrePosters]

其被定義如下所示:

public struct GenrePosters: Decodable, Equatable{ 

    public let poster : String 

    public init? (json: JSON) { 

    guard let poster: String = "poster_path" <~~ json 
     else {return nil} 
    self.poster = poster 
    } 

    public static func ==(lhs: GenrePosters, rhs: GenrePosters) -> Bool { 
    return lhs.poster == rhs.poster 
    } 

當印刷到控制檯它看起來像這樣:

[MyMovieGuide.GenrePosters(海報: 「/e1mjopzAS2KNsvpbpahQ1a6SkSn.jpg」),MyMovieGuide.GenrePosters(海報: 「/jjBgi2r5cRt36xF6iNUEhzscEcb.jpg」),MyMovieGuide.GenrePosters(海報: 「/tIKFBxBZhSXpIITiiB5Ws8VGXjt.jpg」)

我想GenrePosters的數組轉換成一個字符串數組只與海報值,像這樣:

[ 「/e1mjopzAS2KNsvpbpahQ1a6SkSn.jpg」 「/jjBgi2r5cRt36xF6iNUEhzscEcb.jpg」 「/tIKFBxBZhSXpIITiiB5Ws8VGXjt.jpg」]

任何幫助將不勝感激!

+1

的[從對象數組獲得屬性值的數組]可能的複製(http://stackoverflow.com/questions/ 28393334/get-an-array-of-property-values-from-an-object-array) – Hamish

回答

4

你應該能夠做到這一點使用方法map(_:)

let posters = posterList.map {$0.poster} 
+0

'let posters = posterList.map {$ 0.poster}''?這與gp.poster中的gp不同嗎? – rmaddy

+0

@rmaddy這更好,謝謝! – dasblinkenlight

0
public struct GenrePosters: Decodable, Equatable{ 

    public let poster : String 

    public init? (json: JSON) { 

     guard let poster: String = "poster_path" <~~ json 
      else {return nil} 
     self.poster = poster 
    } 

    public static func ==(lhs: GenrePosters, rhs: GenrePosters) -> Bool { 
     return lhs.poster == rhs.poster 
    } 
} 

let genrePostersArray = [GenrePosters(poster: "one"), GenrePosters(poster: "two"), GenrePosters(poster: "three")] 
let genrePostersStringArray = genrePostersArray.flatMap { $0.poster } 
print(genrePostersStringArray) // ["one", "two", "three"] 
+0

注意'flatMap(_ :)'在這裏是不必要的,因爲變換的結果是非可選的 - 您可以簡單地使用'map(_ :)'來代替。 – Hamish

相關問題