繁体   English   中英

iOS Swift在字典中设置值

[英]iOS Swift Setting Values In a Dictionary

我需要访问然后替换字典中的项目。 我很难理解如何在Swift中做到这一点。 我加载一个看起来像这样的plist:

<dict>
<key>Brynthia</key>
<array>
    <dict>
        <key>x</key>
        <integer>389</integer>
        <key>y</key>
        <integer>267</integer>
        <key>moves</key>
        <array>
            <integer>31</integer>
            <integer>1</integer>
            <integer>30</integer>
            <integer>3</integer>
            <integer>7</integer>
            <integer>-1</integer>
            <integer>-1</integer>
            <integer>-1</integer>
            <integer>-1</integer>
            <integer>-1</integer>
        </array>
    </dict>
    <dict>
        <key>x</key>
        <integer>457</integer>
        <key>y</key>
        <integer>275</integer>
        <key>moves</key>
        <array>
            <integer>31</integer>
            <integer>6</integer>
            <integer>30</integer>
            <integer>0</integer>
            <integer>-1</integer>
            <integer>-1</integer>
            <integer>-1</integer>
            <integer>-1</integer>
            <integer>-1</integer>
            <integer>-1</integer>
        </array>
    </dict>
</array>
</dict>

我需要修改数组的每个字典中的x和y值。 我用来阅读它们的代码是:

var kings:[NSMutableDictionary] = []
        var coords:NSMutableDictionary?
        var x = 0.00
        var y = 0.00

        for var i=0;i<4;i++ {
            kings=mapDict?.objectForKey(kingdomNames[i]) as! [NSMutableDictionary]
            for var loc=0;loc<kings.count;loc++ {
                coords = kings[i]
                x=coords!.valueForKey("x")
                y=coords!.valueForKey("y")
                x=x * Double(ratioWidth)
                y=y * Double(ratioHeight)
            }
        }

我敢肯定有更好的方法可以做到这一点,但它确实有效。 所以我的问题是如何将x和y值放回字典中? 我知道如何通过引用其键来更新值,但是当需要引用的字典是数组中的元素时,我不确定如何执行该操作。

顺便说一句,这不是家庭作业。

由于kings是一个可变的Swift数组,因此可以在coords上使用普通的.setValue方法来修改coords ,然后将其分配回数组中的适当元素:

coords.setValue(x, forKey: "x")
kings[i] = coords

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM