从函数动态创建对象

时间:2015-07-27 14:13:39

标签: swift oop

我很抱歉,如果我的问题太愚蠢了,我对OOP和编程很新,但我需要想办法动态创建对象。例如,我有一个类似init的类

   class User {
     var name: String = ""
     var age: Int = 0

   init (name: String, age: Int) {
     self.name = name
     self.age = age
     }
   }

我可以使用

创建新对象
var newUser = User(name: "Joe", age: 21)

但我手动代码手动完成。

我如何自动化这个过程,所以每当我需要创建一个对象时,我会自动传递名称,年龄和对象,并指定新变量而不提及变量名称(例如,有创建变量的模式) ,所以它有user1,user2,user3等)?我是否必须创建一个创建用户实例的特定构建器函数?

2 个答案:

答案 0 :(得分:1)

如果你想为JSON创建一个庞大的用户列表,而不需要手动分配一堆变量名,我会使用一个Dictionary并动态创建键和值。所以函数看起来像这样

var dynamicallyAssignedName: String?
var dynamicallyAssignedAge: Int?

var users: Dictionary<String, User>?
func newUser(name: String, age: Int) {

    var createUser = User(name: dynamicallyAssignedName, age: dynamicallyAssignedAge)

    users[dynamicallyAssignedName] = createUser
}

然后你可以很容易地上传字典。

答案 1 :(得分:0)

你的意思可能是这样的:

let arr = [("Matt", 61), ("Alexey", 123)]
let arr2 = arr.map {User(name:$0.0, age:$0.1)}