一个有关于swift型态的初浅问题

发布于 2022-09-03 12:34:23 字数 1456 浏览 14 评论 0

问这个问题实在是令人感到害羞,但我也搞不清楚要怎么弄才是正确的

程式如下

 CateDictionary = CateJSON as! NSMutableArray
    var i:Int = 0
    var tCateDictionary = NSMutableDictionary()
    tableCateArry = NSMutableArray()
    if CateDictionary != nil {
       
        for cate in CateDictionary {
            
            if cate.objectForKey("Level") as! Int == 1 {
                
                tCateDictionary.setValue(cate.objectForKey("Level"), forKey: "Level")
                tCateDictionary.setValue(cate.objectForKey("catno"), forKey: "catno")
                tCateDictionary.setValue(cate.objectForKey("cat_name"), forKey: "cat_name")
                print(tCateDictionary)
                
                //tableCateArry.addObject(tCateDictionary)
                tableCateArry.insertObject(tCateDictionary, atIndex: i)
                //print(tableCateArry)
                //tCateDictionary.removeAllObjects()
                i++
            }
        }
    }
    print(tableCateArry)

不管我是用 insertobject 或 addobjecgt ,结果都是一样的

图一、(原始资料截出的打印的结果)
图片描述

图二,我存下来后打印的结果(晕)
图片描述

我只是想把 一个 dictionary 里的某些值,存到一个nsarray里,但 不知道为什么存出来的结果都是一样的,但是我print出来的结果是不同的,addobject 后就变一样的,为什么?那里错?怎么作才是正确的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

星星的軌跡 2022-09-10 12:34:23

var tCateDictionary = NSMutableDictionary() 这个定义放到了 for 循环外面,所以你每次添加到 array 里的都是同一个 tCateDictionary 对象,然后每次循环里都重新设置了 Level, cat_name, catno 这三个 key 对应的 value,每次都覆盖了上一次设置的 value,所以导致到最后都变成了最后一个数据的值。循环里的那个打印,应该值都是对的,因为那时候还没有被覆盖,但是外面那个打印,肯定就已经不对了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文