gpt4 book ai didi

ios - 创建可能具有 nil 值的 REST 参数字典

转载 作者:行者123 更新时间:2023-11-29 01:11:38 24 4
gpt4 key购买 nike

我正在尝试为我的 REST 参数创建字典。我遇到的问题是我的数据模型使用了许多可选值,而我的 params 字典当然不能采用 nil 值。我想做的是为可能为零的值设置 NSNull()。例如,这就是我创建参数的方式。

func addBook(book : Book, completionHandler: (error: NSError!) -> Void) {

let params : [String: AnyObject] = ["title": book.title!, "author": book.author!]


Alamofire.request(.POST, booksEndpoint, parameters: params, encoding: .JSON)
.responseJSON { response in
...
...

在这里,我隐式展开我的变量,这会在对象为 nil 时导致崩溃。

这是我初始化数据模型的方式

class Book: NSObject {

var title : String?
var author : String?

//Create a custom initializer from parsed JSON object
init (book : NSDictionary)
{

if let author = book["author"] as? String {
self.author = author
}
if let title = book["title"] as? String {
self.title = title
}
}
}

我应该如何正确处理我的参数可能为零并且我需要将键值设置为 NSNull() 的情况?在现实场景中,我将拥有大量可能为 nil 值的参数。

最佳答案

使用 ??(零合并)运算符代替展开。

let params : [String: AnyObject] = ["title": book.title ?? NSNull(), "author": book.author ?? NSNull()]

或者只是

var params: [String: AnyObject] = [:]
params["title"] = book.title
params["author"] = book.author

如果右侧的值为nil,则根本不会赋值。

当然,有一点不同。第一种方法将在您的 JSON 中生成 null 值,第二种方法将默默地忽略所有 null 值。

关于ios - 创建可能具有 nil 值的 REST 参数字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35684299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com