在Swift中修改数组中对象的值

时间:2014-07-27 17:33:54

标签: ios arrays swift

我在为数组内的对象赋值时遇到了问题。

让我解释一下我的所作所为。 集合是一个结构:

struct Collection {

    var selection : Int = -1  
}

对象是一个包含集合对象数组的对象,它也是一个结构体:

struct Object {

    var collection : [Collection]

如果我使用以下代码,则不会分配值:

fun onSelected(index Int, selectedIndex Int) {
    var collection = self.object.collection[index]
    collection.selection = selectedIndex
}

这可能是因为数组是Swift中的值类型。我是对的吗?

然后我将代码更改为:

fun onSelected(index Int, selectedIndex Int) {
    self.object.collection[index].selection = selectedIndex
}

然后我收到编译错误,错误信息是:

  

/卷/麦金塔   HD /用户/公共/项目/测试/控制器/ MyViewController.swift:214:9:   ' @lvalue $ T8'与' Int'

不同

发生什么事了?如何将值分配给数组中的对象?感谢

修改

我将source code添加到了Dropbox中。它包括我使用的两种方法。如果您有兴趣,请试试。谢谢!

2 个答案:

答案 0 :(得分:0)

这段代码对我来说很好:

struct Collection {
    var selection : Int = -1
}
struct Object {
    var collection : [Collection]
}

var object = Object(collection: [Collection(selection: 0)])

var collection = object.collection[0]

collection.selection = 1
object.collection[0].selection //0

object.collection[0].selection = 2
object.collection[0].selection //2

您的代码中定义的selectedIndex和index在哪里?看起来其中一个导致了这个问题。您可能需要将它们转换为Int Int(selectedIndex)

答案 1 :(得分:0)

事实证明,如果我像这样声明我的对象,它将解决问题:

var object : Object = Object()

之前我将其声明为:

var object : Object!