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

时间:2016-02-28 15:21:31

标签: ios swift2

我正在尝试为我的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值。

1 个答案:

答案 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值。