Swift中遍历函数参数传入的字典时遇报错问题求助
解决Swift可选字典遍历的报错问题
问题根源
你的函数参数body是可选字典类型([String:String]?),Swift不允许直接对可选值执行for-in循环,这是导致报错的核心原因。同时你当前的print语句顺序和预期输出不符,需要调整。
解决方案
下面提供几种可行的修复方式:
1. 可选绑定(推荐,安全)
通过if let解包可选字典,确保只有当body不为nil时才执行遍历:
typealias Dict = [String: String] func test(body: Dict? = nil) { if let unwrappedBody = body { for (key, value) in unwrappedBody { print("key", key) print("value", value) } } } // 调用 test(body: ["name": "Sidney"])
2. 使用默认非可选空字典
把参数默认值设为非可选的空字典,同时将参数类型改为非可选,这样无需解包直接遍历:
typealias Dict = [String: String] func test(body: Dict = [:]) { for (key, value) in body { print("key", key) print("value", value) } } // 调用 test(body: ["name": "Sidney"])
3. 强制解包(不推荐)
如果你能确保调用时body永远不为nil,可以用!强制解包,但空值时会引发崩溃:
typealias Dict = [String: String] func test(body: Dict? = nil) { for (key, value) in body! { print("key", key) print("value", value) } } // 调用 test(body: ["name": "Sidney"])
预期输出
上述代码执行后都会输出:
key name value Sidney
内容的提问来源于stack exchange,提问作者Sidney Okine
相关产品推荐
相关产品推荐

