你說
data2
是let object = try JSONSerialization.jsonObject(with: data!, options:.allowFragments)
在非功能型的價值這種情況下,直接通過JSON
init方法,需要NSArray
/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")
}
以前你說過data2
是
Data
/我從http收到後
在這種情況下,只投它並沒有使用.data(using:)
,例如NSData
func parseSJSON(_ data2: AnyObject) {
...
if let data = data2 as? Data {
// use `data` here
}
}
來源
2016-09-18 07:24:11
Rob
'data2'是一個'AnyObject' ,所以它不知道你要調用'.data(using:)'做什麼。什麼是'data2',真的嗎? – Rob
data2是一個json對象 – CK8
'data(using:UInt)'是'NSString'的一個方法,'data(using:String.Encoding)'是'String'的一個方法。所以,如果'data2'不是字符串,你的代碼就沒有意義了。你的意思是_'data2'是JSON object_的**字符串表示**嗎?如果是這樣,請將'AnyObject'替換爲'String'。 – OOPer