为 class 存储结构数组

Storing array of structures for a class

我想知道存储结构数组的最佳方法。

我有一个 Movie 结构,它有一个名称和一个与之关联的图像

struct Movie {
    var name = ""
    var image = ""
}

和一个 Person 有一个最喜欢的电影,he/she 只能从 movies

的静态数组中挑选
class Person {
    static let movies = [Movie(name: "movie 1", image: "movie-1.png"),
        Movie(name: "movie 2", image: "movie-2.png")]
    var movie = Movie()
}

这是一种存储结构数组的有效方法吗?

例如,我可以启动许多 Person 个实例,并且 movies 的列表可以增长。

var alex1 = Person()
alex1.movie = movies[0]
var alex2 = Person()
alex2.movie = movies[0]

...

Person 对象中只存储每部电影的一个键(例如索引)会更高效一些。当然,您必须保证电影数组不会在不重新映射所有对象的情况下使这些键无效。

我还会将电影数组与 Movie 对象一起保留。比较合乎逻辑。

struct Movie {
  static let movies = [
    Movie(name: "movie 1", image: "movie-1.png"),
    Movie(name: "movie 2", image: "movie-2.png")]
  let name:String
  let image:String
}


class Person {
  var movieIndex:Int = 0
  var movie:Movie? {
    get {
      return Movie.movies[movieIndex]
    }
  }
}

var alex1 = Person()
alex1.movieIndex = 0
var alex2 = Person()
alex2.movieIndex = 1

alex1.movie?.name // "movie-1.png"
alex2.movie?.name // "movie-2.png"