我在为数组内的对象赋值时遇到了问题。
让我解释一下我的所作所为。 集合是一个结构:
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中。它包括我使用的两种方法。如果您有兴趣,请试试。谢谢!
答案 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!