ios - 如何将 swift Dictionary 转换为 NSDictionary

标签 ios swift nsdictionary

我正在尝试将 [String : String](Swift 字典)转换为 NSDictionary,以便稍后在生成字符串的 JSON 库上使用

var parcelDict = ["trackingNumber" : parcel.number,
                  "dstCountry" : parcel.countryCode];

if (parcel.postalService != nil) 
{
    parcelDict["postalService"] = parcel.postalService;
}

var errorPtr: NSErrorPointer
let dict: NSDictionary = parcelDict
var data = NSJSONSerialization.dataWithJSONObject(dict, options:0, error: errorPtr) as NSData

return NSString(data: data, encoding: NSUTF8StringEncoding)

但是 let dict: NSDictionary = parcelDict 不起作用

let dict: NSDictionary = parcelDict as NSDictionary

var data = NSJSONSerialization.dataWithJSONObject(parcelDict as NSMutableDictionary, options:0, error: errorPtr) as NSData

所有这些示例都不起作用。它们会产生以下错误:

enter image description here

enter image description here

正确的做法是什么?

更新:

有效的代码

var parcelDict = ["trackingNumber" : parcel.number!,
                  "dstCountry" : parcel.countryCode!];

if (parcel.postalService != nil) {
    parcelDict["postalService"] = parcel.postalService;
}

var jsonError : NSError?
let dict = parcelDict as NSDictionary
var data = NSJSONSerialization.dataWithJSONObject(dict, options:nil, error: &jsonError)
return NSString(data: data!, encoding: NSUTF8StringEncoding)!

最佳答案

你必须像这样转换它:

let dict = parcelDict as NSDictionary

否则,在 ex 的方法中使用 Swift Dictionary 和 NSDictionary 时,它们的处理方式几乎相同:

func test(dict: NSDictionary) {}

let dict = ["Test":1]
test(dict)

将完全正常工作。


更新后

如果您将 Dictionary 值类型更改为非可选字符串,那么您的错误就会消失。

[String:String?] change to -> [String:String]

关于ios - 如何将 swift Dictionary 转换为 NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29502878/

相关文章:

ios - nsmutableArray 用最后添加的对象替换元素

android - 我可以使用任何 Titanium API 获取用户的电话号码吗?

ios - 如何使用 UIslider 更改 UILabel.font 大小

ios - Swift 中从 UIView 切换到 ScrollView

ios - NSDictionary 未获取第一项 JSON

ios - 应用多个 CAGradientLayer 来 mask View

arrays - 带有 float 组的 Swift 3 扩展

ios - addSubview 如何使用内部尺寸?

ios - 将存储在 NSDictionary 中的 JSON 数据中的应用程序名称存储在 NSArray 中

objective-c - NSDictionary 的哈希值