【发布时间】:2016-05-27 05:21:32
【问题描述】:
我正在为使用结构的类属性编写 getter/setter。这最终从 JSON 解析并转换回 JSON,以便将数据存储在云中。
// struct:
public struct CompletedTask {
var uuid: String!
var amount: Float?
}
// array of completed tasks on the class:
public var completedTasks: [CompletedTask] {
get {
var getValue: [CompletedTask] = []
if let _completedTasks = self["completedTasks"] as? [Dictionary<String, AnyObject>] {
_completedTasks.forEach({
getValue.append(CompletedTask(uuid: $0["uuid"], amount: nil))
})
}
return getValue
}
set(value) {
var setValue: [Dictionary<String, AnyObject>]
value.forEach({
if let amount = $0.amount where $0.amount != nil {
setValue.append(["uuid": $0.uuid, "amount": amount])
} else {
setValue.append(["uuid": $0.uuid])
}
})
self["completedTasks"] = setValue
}
}
setter(我认为,虽然我无法测试)工作正常(无论如何它可以编译)。但是getter正在抛出:
Cannot subscript a value of type '[String : AnyObject]' with an index of type 'String'
发生了什么事?我认为这是一个简单的解决方法,但我尝试了几种不同的选项,但都不起作用。
【问题讨论】:
-
completedTasks 它是一个数组,所以你需要使用 Int 作为索引
-
德拉特,见编辑。复制/粘贴失败。我正在做一个 forEach 并引用 $0;为什么那行不通?
-
self["completedTasks"] = setValueself 总会有一个数组 -
真的不知道你在这里得到什么。即使我这样做this,我仍然有同样的问题。
-
哦。我将其转换为字典而不是字典数组。 [] 与 [[]]。
标签: ios swift struct anyobject