这可能是一个非常简单的问题。我创建了一个定制的人物'存储有关特定人员的信息的类。以下是我创建的以下课程:
class Person: NSObject {
var name: String
var age: Int
var height: Double
init(name: String, age: Int, height: Double) {
self.name = name
self.age = age
self.height = height
}
}
我可以像这样创建这个类的新实例:
let person1 = Person(name: "Bob", age: 25, height: 1.62)
我也明白,一旦我对每个实例进行了初始化,我就可以将这个类的实例存储在一个数组中。但问题是,在我的应用程序中,我想拥有大量实例,其中大约有30个实例。
在启动应用程序之前,我知道我想要的每个类的实例的特征。
我的问题是这个。是否有更好的方法来创建这些类实例,而不是在应用程序启动时逐个执行它?
答案 0 :(得分:1)
首先,对于一个简单的类来说,30并不是一个很大的数字。但复制/过去30个实例化代码副本肯定会很烦人,而且动机是从代码中分割数据。
为此,可能最简单的方法是将所有数据放在一个简单的属性列表中,将属性列表作为资源添加到应用程序中,读入它然后在创建Person()实例时循环内容方式。
分配和实例化30个Person实例是不可避免的,但您可以使用上述内容来减少执行此操作所需的代码行数。
然而,真的...... 30行:
array.append(Person(...))
以后很难取代它,坦率地说,表现最好的节目通常是首先发布的节目。
import Cocoa
class Person: NSObject {
var name: String
var age: Int
var height: Double
init(name: String, age: Int, height: Double) {
self.name = name
self.age = age
self.height = height
}
}
var persons = [Person]()
persons.append(Person(name: "bob", age: 42, height: 6.2))
persons.append(Person(name: "fred", age: 32, height: 5.9))
... repeat 28 times ...
嗯 - 为了学习?我只是做上面的事情。
答案 1 :(得分:1)
有没有更好的方法来创建这些类实例,而不是在应用程序启动时逐个进行?
没有。你必须这样做,就像超人穿上他的裤子,一次一条腿。甚至还必须创建您的应用程序委托和您的共享应用程序实例。实例可以实现的唯一方法是通过实例化!
但是,可能有更好的代码方式。例如,您可以将数据(即每个对象的特征)放入 .plist 文件或XML文件中,甚至一个SQLite数据库,并在启动时加载它,而不是完全手动写出每个实例,从而将这些特性硬编码到代码中。