我们如何在向服务器发送请求时在字典[String:String]的参数列表中传递默认空值? Swift3

时间:2018-01-05 10:04:42

标签: swift3 http-post

在某些情况下,我必须将空值作为默认值或参数值发布到服务器。我尝试了很多方法,但它没有用。我使用Alamofire发布请求。请帮忙。

方法-1

   var empty : String = ""
   let parameters = ["User-Id":userId,"search_cat": formattedArray ?? empty,"date1":ab ?? empty,"date2" : bc ?? empty,"docname" : empty
        ] as! [String : String]

方式-2

   let parameters = ["User-Id":userId,"search_cat": formattedArray ?? "","date1":ab ?? "","date2" : bc ?? "","docname" : ""
        ] as! [String : String]

方式-3

 var nullvalue : String = ""
    if formattedArray == nil
    {
        formattedArray = ""
        print(formattedArray)

    }
    if ab == nil
    {
        ab = ""
        print(ab)

    }
    if bc == nil
    {
        bc = ""
        print(bc)

    }
    if nullvalue == nil
    {
        nullvalue = ""
    }
    parameters = ["User-Id":userId,"search_cat": formattedArray,"date1":ab ,"date2" : bc ,"docname" : nullvalue ] 
      as! [String : String]

方法 - 4 根据回答,我将参数列表字典更改为[String:AnyObject],但它仍然无效。并且给我错误。

var ab:String?
var bc : String?
var formattedArray: String?

parameters = ["User-Id":userId ,"search_cat": formattedArray ?? NSNull() ,
"date1":ab ?? NSNull() ,"date2" : bc ?? NSNull(),
"docname" :  NSNull()] as! [String : AnyObject]

方法4 在尝试设置formattedArray时给我错误? NSNull(): 无法转换类型的值' NSNull'预期参数类型'字符串' 其余的参数工作正常。请帮助。

2 个答案:

答案 0 :(得分:0)

更新:这是你想要的吗?

class RequestParameter : NSObject{

var formattedArray : String!
var date1 : String!
var date2 : String!
var docName : String!
var userId : String!      // or whatever if hardCoded

func param() -> NSDictionary{

   var param : [String : String] = [:]

   param["User-Id"] = userId
   param["search_cat"] = formattedArray
   param["date1"] = date1
   param["date2"] = date2
   param["docname"] = docName

   return param as! NSDictionary
  }
}

您可以根据需要调用这些参数。喜欢 var reqParam = RequestParameter() reqParam.param()

我真的不知道你的Request参数类型。例如。应该看起来像 date1 = nil 还是别的什么。 这就是我能回答你的全部内容。如果错了,也许有人可能会更好。

祝你好运!

答案 1 :(得分:0)

几天前我实际上遇到了同样的问题并使用NSNull()来解决它。

转换我的类时,我想发送videoUrl属性而不管它是否包含值,以便后端可以在数据库中更新它。

dict["videoUrl"] = videoUrl ?? NSNull()

这将设置键" videoUrl"使用属性videoUrl的值,或者如果为nil,则为NSNull()的实例。

Express.js然后将其读取为未定义,并将空值插入数据库。

Null value

编辑:我在下面看到了你的一条评论。使用类型为[String:String]的Dictionary时,您将永远无法传递nil值。