迭代字典swift 3

时间:2017-05-29 13:23:49

标签: swift dictionary iteration optional

我的项目中有以下代码。

var webpack = require('webpack');
var path = require('path');
var version = require('./package.json').version;

module.exports = {
  entry: {
    js: './src/main.js'
  },
  output: {
    path: path.resolve('./dist/sdk'),
    filename: [`oc-sdk-${version}.js`, 'oc-sdk-latest.js']
  }
}

我的问题是如何在for循环可选中创建键和值,或检查它们中的任何一个是否为零? 我无法检查它们是否为零,警告说任何不能为零因为它是非可选的。

我正在考虑使用类似的东西 for(key:String?,value:String?){}

但它没有用。

2 个答案:

答案 0 :(得分:1)

字典中的键不能是可选的。 (密钥必须符合Hashable协议,而选项不符合。)所以你 CAN' T 使字典中的密钥可选

如果您希望字典的值为Optionals,则需要将其声明为Optionals

所以,例如,改变

let photoDic: [String: String] = ["key1": "http://www.someDomain.com/image.jpg"]

let photoDic: [String: String?] = ["key1": "http://www.someDomain.com/image.jpg"]

(请注意,photoDic的类型已更改为[String: String?]。)

答案 1 :(得分:0)

如前所述,字典中的所有键 根据定义是非可选的

此外,NSDictionary 所有值 根据定义也是

对此感到高兴,因为

  • 无需检查nil
  • 代码永远不会崩溃。

Swift字典理论上可以包含可选值,但实际上不鼓励使用它。出于兼容性原因,NSDictionary nil值表示密钥丢失