Swift中的一个类的几个实例

时间:2016-10-23 17:59:59

标签: ios swift class instance

这可能是一个非常简单的问题。我创建了一个定制的人物'存储有关特定人员的信息的类。以下是我创建的以下课程:

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个实例。

在启动应用程序之前,我知道我想要的每个类的实例的特征。

我的问题是这个。是否有更好的方法来创建这些类实例,而不是在应用程序启动时逐个执行它?

2 个答案:

答案 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数据库,并在启动时加载它,而不是完全手动写出每个实例,从而将这些特性硬编码到代码中。