Swift 使用计算属性设置新值
我有一个模型对象,我想为该对象设置新值 下面我已经提到了对象变量和初始化Swift 使用计算属性设置新值,swift,nsdictionary,computed-properties,Swift,Nsdictionary,Computed Properties,我有一个模型对象,我想为该对象设置新值 下面我已经提到了对象变量和初始化 private var _data: NSMutableDictionary // MARK:- Init init(data: [String: AnyObject]) { _data = NSMutableDictionary(dictionary: data) } 如何使用setter设置新值。下面我已经提到了计算变量 var name: String? { get { if l
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
编辑
我能找到这个问题的答案
我需要更改_数据对象的名称。因此,我必须在不更改_数据中的其他变量的情况下更新名称。因此,我保留了_数据对象的可变副本,并在其中更改了新值。然后更新了_数据对象。不确定您在这里要做什么,但您不能只写以下内容:
set {
_data.objectForKey("network")?.objectForKey("name") = newValue
}
编辑:错误的函数,应该是:
set {
_data.objectForKey("network")?.setObject(newValue, forKey: "name")
}
差不多
set {
_data.objectForKey("network")?.setObject(newValue, forKey: "name")
}
这个怎么样:
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还处理网络
键不存在的情况。如果\u data
也可以是nil
,那么还可以添加一个额外的If let
来解决这种情况
顺便说一句,我还添加了一个较短版本的getter。我以前试过。它给出了一个错误“不能赋值:函数调用返回不可变值”,在这里我创建了一个模型对象。所以我想写set选项。根据这个理论,你的答案似乎是正确的。但我无法理解错误您告诉我们您想要实现什么,但您没有告诉我们您遇到了什么问题。它给出了错误“无法识别的选择器发送到实例0x7fd240dcf180”,那么字典中到底是什么?您需要在该对象上调用适当的setter函数。