当我将swift 2转换为swift 3时,会显示以下消息
无法调用非函数类型((UInt) -> Data?)!
func parseSJSON(_ data2: AnyObject) {
/** INITIALIZE THE SESSION **/
clearUserInfo()
if let data = data2.data(using: String.Encoding.utf8) {
let json = JSON(data: data)
let userID = json["userID"].stringValue
prefs.setValue(userID, forKey: "userID")
}
}
答案 0 :(得分:1)
感谢您的帮助,我尝试了不同的方法。 通过尝试和错误,我将我的代码更改为此,它可以工作!
func parseSJSON(_ data2:AnyObject,catalog:String) // func parseSJSON(_ data2:Data,catalog:String)
{
clearUserInfo()
// if let data = data2.data(using: String.Encoding.utf8) {
if let data = data2.data(using: String.Encoding.utf8.rawValue) {
let json = JSON(data: data)
let userID = json["userID"].stringValue
prefs.setValue(userID, forKey: "userID")
}
}
答案 1 :(得分:0)
你说
data2
是let object = try JSONSerialization.jsonObject(with: data!, options:.allowFragments)
在这种情况下,只需将其直接传递给采用JSON
/ NSArray
的{{1}} init方法,即不带NSDictionary
参数标签的再现:
data:
顺便说一下,如果您要自己解析它,则不需要let json = JSON(data2) // note, if parameter is `Any` (the `NSDictionary`/`NSArray` structure of parsed JSON), then do not include `data:`
,例如。
.allowFragments
或者,更简单,根本不打电话给let object = try JSONSerialization.jsonObject(with: data!, options: [])
,直接通过JSONSerialization
:
Data
让parse(data: data!)
调用parse(data:)
,它将为您解析它:
JSON(data:)
以前你说func parse(data: Data) {
clearUserInfo()
let json = JSON(data: data) // note, if parameter is `Data`, include `data:`
let userID = json["userID"].stringValue
prefs.setValue(userID, forKey: "userID")
}
是
我从http post 收到的
data2
/Data
在这种情况下,只需投放它并且不要使用NSData
,例如
.data(using:)