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

Swift 2中如何将NSMutableDictionary添加到NSMutableArray指定索引的字典中

解决Swift 2中把array2指定索引字典作为子字典添加到array1指定索引字典的问题

嘿,我来帮你搞定这个Swift 2的需求!首先得明确一个关键点:NSDictionary是不可变类型,直接修改array1里的字典会报错,必须先转成NSMutableDictionary才能添加子字典。下面是一步步的实现方案和代码示例:

核心步骤

  1. 从array1中取出指定索引的字典,转换为可变字典(NSMutableDictionary)
  2. 从array2中取出指定索引的目标字典
  3. 将目标字典作为子字典添加到可变字典中(自定义子字典的key)
  4. 由于NSMutableDictionary是引用类型,修改后array1中的原元素会自动更新,无需额外替换操作(当然也可以显式替换确保稳妥)

完整代码示例

假设你要操作的索引是targetIndexInArray1(array1的位置)和targetIndexInArray2(array2的位置),代码如下:

// 定义要操作的索引,替换成你实际需要的数值
let targetIndexInArray1 = 0
let targetIndexInArray2 = 0

// 1. 安全取出array1中对应索引的字典,并转为可变类型
guard let mutableDictFromArray1 = array1.objectAtIndex(targetIndexInArray1) as? NSMutableDictionary else {
    print("警告:array1指定索引的元素不是NSDictionary类型")
    return
}

// 2. 安全取出array2中对应索引的字典
guard let subDictFromArray2 = array2.objectAtIndex(targetIndexInArray2) as? NSDictionary else {
    print("警告:array2指定索引的元素不是NSDictionary类型")
    return
}

// 3. 将array2的字典作为子字典添加到array1的可变字典中,这里的key可以自定义(比如"subData")
mutableDictFromArray1.setObject(subDictFromArray2, forKey: "subData" as NSCopying)

// 可选:显式替换array1中的元素(因为是引用类型,其实这一步可以省略,但加上更稳妥)
array1.replaceObjectAtIndex(targetIndexInArray1, withObject: mutableDictFromArray1)

// 打印验证结果
print("修改后的array1对应元素:\(array1.objectAtIndex(targetIndexInArray1))")

示例效果

假设原array1中的字典是:

{
    "title": "主条目1",
    "code": "A001"
}

array2中的字典是:

{
    "description": "详细描述内容",
    "value": 100
}

执行代码后,array1中的字典会变成:

{
    "title": "主条目1",
    "code": "A001",
    "subData": {
        "description": "详细描述内容",
        "value": 100
    }
}

注意事项

  • Swift 2中对Foundation集合(NSMutableArray/NSDictionary)的操作要使用objectAtIndex方法,而不是Swift原生集合的下标语法
  • 一定要做类型校验(guard let),避免因为array中存在非NSDictionary类型的元素导致运行时崩溃
  • 子字典的key可以根据你的业务需求任意修改,比如换成"childDict"、"details"等

内容的提问来源于stack exchange,提问作者B.Saravana Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:18:39