Swift 2中如何将NSMutableDictionary添加到NSMutableArray指定索引的字典中
解决Swift 2中把array2指定索引字典作为子字典添加到array1指定索引字典的问题
嘿,我来帮你搞定这个Swift 2的需求!首先得明确一个关键点:NSDictionary是不可变类型,直接修改array1里的字典会报错,必须先转成NSMutableDictionary才能添加子字典。下面是一步步的实现方案和代码示例:
核心步骤
- 从array1中取出指定索引的字典,转换为可变字典(NSMutableDictionary)
- 从array2中取出指定索引的目标字典
- 将目标字典作为子字典添加到可变字典中(自定义子字典的key)
- 由于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
相关产品推荐
相关产品推荐

