You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift向[[NSNumber]]数组追加值存plist出现所有子数组值相同问题

问题根因
  • 核心错误出在外层数组的初始化逻辑:你使用[NSMutableArray](repeating: [], count: 12)创建数组时,由于NSMutableArray属于引用类型,repeating语法会复用同一个NSMutableArray实例填充所有12个位置。
  • 也就是说你声明的外层数组里12个元素指向的是同一个子数组对象,后续无论往哪个下标的子数组追加数据,实际修改的都是同一个实例,最终所有子数组的内容自然完全相同。
修复方案

把原初始化代码替换为循环创建独立子数组的写法即可,修改后代码:

var array: [NSMutableArray] = (0..<12).map { _ in NSMutableArray() }

上述写法会在每次遍历时生成全新的NSMutableArray实例,12个子数组各自独立,后续追加内容不会互相干扰。

额外优化建议

你现有代码中(array[i] as AnyObject)的写法是多余的,因为你已经显式声明了array的元素类型为NSMutableArray,可以直接调用方法:

func dataReceived(withData data: [[NSNumber]]!) {
    for i in 0..<12 {
        array[i].addObjects(from: data[i])
    }
}

内容的提问来源于stack exchange,提问作者ndrzhr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:06:04