如何将Swift字典转换为NSDictionary [英] How do I convert swift Dictionary to NSDictionary

查看:677
本文介绍了如何将Swift字典转换为NSDictionary的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to convert a [String : String] (a Swift Dictionary) to NSDictionary, for later use on a JSON library that produces a string

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

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

All of these examples do not work. They produce the following errors:

正确的做法是什么?

更新:

有效的代码

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)!

推荐答案

您必须像这样进行投射:

You have to cast it like this:

let dict = parcelDict as NSDictionary

否则,在ex的方法中使用Swift字典和NSDictionary时,其处理方式几乎相同:

Otherwise the Swift Dictionary and NSDictionary are treated almost the same way when using it in methods for ex:

func test(dict: NSDictionary) {}

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

完全可以正常工作.

更新后

如果将字典"值类型更改为非可选字符串,则错误将消失.

If you change your Dictionary value type to non optional String then your error will go away.

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

这篇关于如何将Swift字典转换为NSDictionary的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆