为 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"
我想知道存储结构数组的最佳方法。
我有一个 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"