2017-02-03 89 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

相关问题