如何将int变量分配给请求参数?

时间:2017-09-06 15:16:11

标签: swift vapor

在下面的代码片段test1()编译中,test2()没有。如何将Int类型的变量分配给请求参数?

Swift 3.1.1版(swift-3.1.1-RELEASE) 目标:x86_64-unknown-linux-gnu

import Testing
import HTTP

func test1() throws {
    let req = Request.makeTest(method: .get)
    //OK compiles
    req.parameters["id"] = 1
}

func test2() throws {
    let req = Request.makeTest(method: .get)
    let id = 1
    // NOK doesn't compile
    // compiler error:
    // /path/to/file.swift:12:28: error: cannot assign value of type 'Int' to type 'Parameters?'
    // req.parameters["id"] = id
    //                        ^~
    req.parameters["id"] = id
}

2 个答案:

答案 0 :(得分:1)

那是因为1不是int。这是可以转换为各种类型的东西(例如Int,Int32,Float,Double,UInt等),编译器将确定它是否可以转换为使调用工作的类型。在第二种情况下,编译器决定何时为id指定id为Int。显然Int不能分配给参数?

答案 1 :(得分:1)

尝试以下方法(适用于Swift 4,Vapor 2):

func test2() throws {
    let req = Request.makeTest(method: .get)
    let id = 1
    req.parameters["id"] = Parameters(id)
}