作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试将 [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
所有这些示例都不起作用。它们会产生以下错误:
正确的做法是什么?
更新:
有效的代码
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/
我是一名优秀的程序员,十分优秀!