我正在尝试为我的REST参数创建一个字典。我遇到的问题是我的数据模型使用了许多可选值,而我的params字典当然不能取nil值。我想要做的是为可能为零的值设置NSNull()。例如,这就是我创建params的方式。
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
}
}
}
在这里,我隐含地解开我的变量,当对象为零时会导致崩溃。
以下是我初始化数据模型的方法
#squeeze {
width: 90%;
}
我应该如何正确处理我的params可能为nil并且我需要将键值设置为NSNull()的情况?在实际情况中,我将有更多的参数和可能的nil值。
答案 0 :(得分:1)
而不是展开,请使用??
(无合并)运算符。
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
值。