-2

モデル オブジェクトがあり、そのオブジェクトに新しい値を設定したいと考えています。

以下では、オブジェクト変数と初期化について説明しました

private var _data: NSMutableDictionary

// MARK:- Init
init(data: [String: AnyObject])
{
    _data = NSMutableDictionary(dictionary: data)
}

セッターで新しい値を設定するにはどうすればよいですか。ベロー私は計算された変数について言及しました

var name: String? {

    get {
        if let nameObject = _data.objectForKey("network")?.objectForKey("name") {
            return (nameObject as! String)
        } else {
            return nil
        }
    }

    set {

    }
}

セッターを完了する必要があります

編集

この質問に対する答えを見つけることができました。

_data オブジェクトの名前を変更する必要があります。したがって、_data 内の他の変数を変更せずに名前を更新する必要があります。だから私は _data オブジェクトの変更可能なコピーを保持し、そこで新しい値を変更しました。次に、_data オブジェクトを更新しました。

4

3 に答える 3

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
        }
    }
}

セッターは、networkキーが存在しない状況にも対処します。可能であれば、この状況に対処するために追加することも_dataできます。nilif-let

ところで、短いバージョンのゲッターも追加しました。

于 2016-01-10T18:33:30.980 に答える
-1

ここで何をしようとしているのかよくわかりませんが、これを書くことはできません:

set {
    _data.objectForKey("network")?.objectForKey("name") = newValue
}

編集:間違った機能です。

set {
    _data.objectForKey("network")?.setObject(newValue, forKey: "name")
}
于 2016-01-10T18:20:59.510 に答える