我有一个模型对象,我想为对象设置新值。
下面我提到了对象变量和初始化
private var _data: NSMutableDictionary
// MARK:- Init
init(data: [String: AnyObject])
{
_data = NSMutableDictionary(dictionary: data)
}
如何使用setter设置新值。下面我提到了计算变量
var name: String? {
get {
if let nameObject = _data.objectForKey("network")?.objectForKey("name") {
return (nameObject as! String)
} else {
return nil
}
}
set {
}
}
需要完成setter
修改
我可以找到这个问题的答案。
我需要更改_data对象的名称。所以我必须更新名称而不更改_data旁边的其他变量。所以我保留了_data对象的可变副本并在那里更改了新值。然后更新了_data对象。
答案 0 :(得分:0)
像
这样的东西set {
_data.objectForKey("network")?.setObject(newValue, forKey: "name")
}
答案 1 :(得分:0)
这个怎么样:
var name: String? {
get {
return _data["network"]?["name"] as? String
}
set {
if let network = _data["network"] as? Dictionary {
network["name"] = newValue
} else {
let network: [String:AnyObject] = ["name": newValue]
data["network"] = network
}
}
}
setter还会处理network
键不存在的情况。如果_data
也可以nil
,则可以添加额外的if-let
来解决这种情况。
BTW,我还添加了一个较短版本的getter。
答案 2 :(得分:-1)
不确定你在这里想做什么,但你不能写下这个:
set {
_data.objectForKey("network")?.objectForKey("name") = newValue
}
编辑:错误的功能,应该是:
set {
_data.objectForKey("network")?.setObject(newValue, forKey: "name")
}