String Swift可以打印任何对象,但可以';不能从任何对象创建字符串

String Swift可以打印任何对象,但可以';不能从任何对象创建字符串,string,swift,String,Swift,我有两段几乎完全相同的代码,这让我感到困惑。两者的运作方式都让我感到惊讶。第一部分工作如下所示: let HTTPBody = NSJSONSerialization.dataWithJSONObject(jsonDict, options: NSJSONWritingOptions.PrettyPrinted, error: &jsonError) let jsonObj : AnyObject! = NSJSONSerialization.JSONObjectWithData(HTT

我有两段几乎完全相同的代码,这让我感到困惑。两者的运作方式都让我感到惊讶。第一部分工作如下所示:

let HTTPBody = NSJSONSerialization.dataWithJSONObject(jsonDict, options: NSJSONWritingOptions.PrettyPrinted, error: &jsonError)
let jsonObj : AnyObject! = NSJSONSerialization.JSONObjectWithData(HTTPBody, options: NSJSONReadingOptions.MutableLeaves, error: &jsonError2)
println(jsonObj)
它将JSON对象打印为字符串

{
button =     {
    name = test;
    "price_currency_iso" = USD;
    "price_string" = "0.20";
};
}

代码的另一部分,它不能按预期工作

 let HTTPBody = NSJSONSerialization.dataWithJSONObject(jsonDict, options: NSJSONWritingOptions.PrettyPrinted, error: &jsonError)
let jsonObj : AnyObject! = NSJSONSerialization.JSONObjectWithData(HTTPBody, options: NSJSONReadingOptions.MutableLeaves, error: &jsonError2)
let jsonData = jsonObj as? NSData
jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)
println(jsonString)
它只打印出一个空行,这意味着“jsonString”是一个空字符串


Xcode如何知道并能够转换AnyObject!在使用println时转换为字符串,但无法从AnyObject创建NSString对象!同时?

在代码的第二部分中,您试图从一个不存在的
NSData
对象创建
jsonString
NSData
基本上表示作为数据的任意字节的集合。但是,您的
jsonObj
对象很可能是已序列化和反序列化的原始
jsonDict
对象的
NSDictionary

为了回答您的基本问题,如果您想要获得任意
AnyObject
类型的字符串表示,正如您所指出的,
println
可以处理其中的大部分。要创建一个实际的字符串实例,该实例包含从
println
中看到的相同表示形式,可以使用以下语法:

let object : AnyObject = ...
let stringRepresentation = "\(object)"
现在,您将从以下两条语句中看到相同的输出:

println(object)
println(stringRepresentation)

jsonData
包含什么?我更新了我的问题以包含缺少的声明。jsonData现在已初始化。jsonObj是一个NSDictionary而不是NSData,因此jsonData为零。就是这样!我不知道字符串插值对任何对象都有效。谢谢