【发布时间】:2016-09-19 23:08:52
【问题描述】:
当我将 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")
}
}
【问题讨论】:
-
data2是一个AnyObject,所以它不知道你打电话给.data(using:)是怎么回事。data2真的是什么? -
data2 是一个 json 对象
-
data(using: UInt)是NSString的方法,data(using: String.Encoding)是String的方法。因此,如果data2不是字符串,则您的代码没有任何意义。您的意思是data2是 JSON 对象的 字符串表示 吗?如果是这样,请将AnyObject替换为String。 -
当您说“JSON”对象时,您是说它是您在某些网络响应中收到的原始
Data/NSData?或者它是JSONSerialization.jsonObject(with:options:)的输出还是您从Alamofire 的responseJSON收到的对象?向我们展示您如何创建传递给parseSJSON的对象,我们可以告诉您如何将其传递给 SwiftyJSON。 -
我从 http post 收到的数据/NSData