Swift 3.0中如何将字典以索引形式添加至数组及构造指定结构数组
在Swift 3.0中构造目标数组的两种场景解决方案
嘿,我来帮你理清这两个数组操作的问题,都是Swift里很基础但实用的技巧:
一、将字典以数组索引形式添加到数组里
其实就是把字典作为元素插入或追加到数组的指定位置,步骤很简单:
- 先定义好你的字典和数组(注意数组的类型要声明为
[[String: Any]],这样才能容纳不同值类型的字典) - 用
append()把字典加到数组末尾,或者用insert(_:at:)把字典插入到指定索引位置
示例代码:
// 定义一个示例字典 let userDict = ["username": "JohnDoe", "email": "john@example.com"] // 初始化一个空的字典数组 var dictArray = [[String: Any]]() // 方法1:追加到数组末尾(此时字典的索引是dictArray.count - 1) dictArray.append(userDict) // 方法2:插入到指定索引位置,比如索引0(数组开头) dictArray.insert(userDict, at: 0)
二、构造单个键值对字典组成的数组
要得到像[{ "summary": "fdsfvsd" }, { "content_date": "1510158480" }, { "content_check": "yes" }]这样的结构,有两种常用方式:
方式1:直接用字面量初始化
如果你的键值对是固定的,直接写数组字面量是最直观的:
let resultArray: [[String: Any]] = [ ["summary": "fdsfvsd"], ["content_date": "1510158480"], ["content_check": "yes"] ]
方式2:从已有大字典拆分转换
如果这些键值对原本在一个完整的字典里,你可以通过遍历或者map方法快速转换:
// 假设你有一个包含所有键值对的原字典 let originalData = [ "summary": "fdsfvsd", "content_date": "1510158480", "content_check": "yes" ] // 用map方法一行完成转换 let resultArray = originalData.map { keyValue in [keyValue.key: keyValue.value] } // 或者用for循环手动添加(适合需要额外处理的场景) var resultArray = [[String: Any]]() for (key, value) in originalData { resultArray.append([key: value]) }
需要注意的是,Swift 3.0里如果字典的值类型不统一(比如既有字符串又有数字),数组的类型要声明为[[String: Any]],这样才能兼容不同的值类型哦。
内容的提问来源于stack exchange,提问作者Mark Sunny
相关产品推荐
相关产品推荐

