我正在使用Xcode 7.2和swift 2.0,并且正在将Objective-C代码块转换为swift。 Objective-c中的代码是

  NSString *jsonstring = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
[requests setHTTPBody:[jsonstring dataUsingEncoding:NSUTF8StringEncoding]];


我在调用函数时将urlData作为参数传递。这在obj-c中工作正常。但是当我将其转换为swift 2.0时

let jsonstring = String(data: urlData, encoding: NSUTF8StringEncoding)!
requests.HTTPBody = String(data: jsonstring, encoding: NSUTF8StringEncoding)


错误在此行中显示为


  “无法将类型为'string'的值转换为预期的参数类型
  nsdata”


谁能告诉我为什么会抛出此错误,我该怎么做才能纠正代码?

最佳答案

[jsonstring dataUsingEncoding:NSUTF8StringEncoding]];是方法-[NSString dataUsingEncoding:]

String(data: jsonstring, encoding: NSUTF8StringEncoding)是方法-[NSString initWithData:encoding:]

这不是等效的代码。尝试调用jsonstring.dataUsingEncoding(NSUTF8StringEncoding)

07-26 09:43