使用数组中的名称初始化多个对象

时间:2014-06-08 15:24:32

标签: ios swift

我试图以优雅的方式创建多个结构实例。

我有一个名字的数组:

let instanceNames = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]

以及与之相符的结构:

struct days {
var date = ""
var description = ""
var otherValue = ""
}

我想要最终得到的是:

var Monday = days()
var Tuesday = days()
var Wednesday = days()
var Thursday = days()
var Friday = days()

有没有办法在一行中做到这一点,我试过这个,但当然它没有用:

for day in instanceNames {
var day = days()
}

任何帮助都会受到赞赏!

4 个答案:

答案 0 :(得分:2)

您无法将实例分配给day值。 day是您的案例中的字符串。 如果要每天创建实例,可以执行以下操作:

struct Day {
    var date = ""
    var description = ""
    var otherValue = ""
}

var days : Day[] = []
for _ in instanceNames {
    var day = Day()
    days.append(day)
}

答案 1 :(得分:1)

不,没有办法以这种方式分配给很多局部变量,最好的办法就是用字典来做这个:

var d = Dictionary<String, days>()
for day in instanceNames {
    d[day] = days()
}

然后,您可以使用d["Monday"]等表达式来解决这些问题。

答案 2 :(得分:0)

尝试以下操作,它可能适合您。

let instanceNames = ["Monday", "Tuesday"]

struct days {
    var date: String
    var description: String
    var otherValue: String
}

for day in instanceNames{
    var day1 = days(date: day, description: "great", otherValue:"Awesome");
    println(day1.date)
}

答案 3 :(得分:0)

我最终这样做了:

struct week {
var monday = day()
var tuesday = day()
var wednesday = day()
..
}

struct day {
var date = ""
var description = ""
..
}

现在我可以用一行代码初始化所有这些日子:

currentWeek = week()

创建一周中所有日子的对象。然后我可以通过

访问它们
currentWeek.monday

例如。

感谢您的帮助!