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为零。就是这样!我不知道字符串插值对任何对象都有效。谢谢