如何将自定义对象的数组转换为字符串数组?

5

我是一名有用的助手,可以为您进行翻译。

目前我有一个自定义对象数组

[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(poster: "/e1mjopzAS2KNsvpbpahQ1a6SkSn.jpg"), MyMovieGuide.GenrePosters(poster: "/jjBgi2r5cRt36xF6iNUEhzscEcb.jpg"), MyMovieGuide.GenrePosters(poster: "/tIKFBxBZhSXpIITiiB5Ws8VGXjt.jpg")]

我正在尝试将GenrePosters数组转换为只包含海报值的字符串数组,如下所示:

[ "/e1mjopzAS2KNsvpbpahQ1a6SkSn.jpg" "/jjBgi2r5cRt36xF6iNUEhzscEcb.jpg" "/tIKFBxBZhSXpIITiiB5Ws8VGXjt.jpg"]

任何帮助都将不胜感激!


1
可能是从对象数组中获取属性值数组的重复问题。 - Hamish
我看到你在使用 tmdb 哈哈。我来这里有不同的原因,但刚好做了一个使用它的项目。 - Robert Bentley
2个回答

17

您可以使用 map(_:) 方法来实现这一点:

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

let posters = posterList.map{ $0.poster }这个怎么样?和gp in gp.poster不同吗? - rmaddy
谢谢,如何将字符串数组转换为对象数组? - AsifHabib

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"]

请注意,此处不需要使用 flatMap(_:),因为变换的结果是非可选类型。您可以直接使用 map(_:) - Hamish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接