非関数型の値を呼び出すことはできませんあなたは
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(using:)
を使用していないのhttpから受信
Data
/NSData
です
func parseSJSON(_ data2: AnyObject) {
...
if let data = data2 as? Data {
// use `data` here
}
}
出典
2016-09-18 07:24:11
Rob
'data2'が' AnyObject'ありますだから、 '.data(:を使用して)'あなたの呼び出しをどうするか分からない。本当に 'data2'とは何ですか? – Rob
data2はjsonオブジェクトです – CK8
'data(using:UInt)'は 'NSString'のメソッドで、' data(String.Encodingを使用) 'は' String'のメソッドです。したがって、 'data2'が文字列でない場合、あなたのコードは意味を持ちません。あなたは_'data2'が** JSONオブジェクトの**文字列表現**であることを意味しますか?もしそうなら、 'AnyObject'を' String'に置き換えてください。 – OOPer