2017-01-16 3 views
0
func connectionDidFinishLoading(_ connection: NSURLConnection) 
    { 

    NSLog("\(statusResponseData)") 

    let strData:NSDictionary! = (try! JSONSerialization.jsonObject(with: statusResponseData, options: JSONSerialization.ReadingOptions.mutableContainers)) as! NSDictionary 

Je reçois l'erreur suivante lorsque j'ai converti mon code de swift 2.2 en swift 3.0.
Erreur lors de l'analyse syntaxique de json dans la sérialisation NSJSON dans les ios rapides

ne peut invoquer objet JSON avec un argument de type de liste (avec des données NSMutable Options: JSONSerialization.ReadingOptions).

S'il vous plaît aidez-moi à résoudre ce problème.

+1

Lisez les notes de mise à jour de Swift 3, ce que vous n'avez pas fait, et lisez les modifications que vous devez apporter au code Swift 2. N'utilisez pas mutableContainers sauf si vous savez pourquoi. Et j'espère que vous êtes conscient que votre code va planter s'il y a un problème. – gnasher729

+0

@ gnasher729. Je suis nouveau à swift.Can vous s'il vous plaît aidez-moi avec mon code? – Rakesh

Répondre

0

remplacer:

let strData:NSDictionary! = (try! JSONSerialization.jsonObject(with: statusResponseData, options: JSONSerialization.ReadingOptions.mutableContainers)) as! NSDictionary 

avec:

if let strData = try JSONSerialization.jsonObject(with: statusResponseData, options: []) as! JSONObject { 
     //Do what you need to! 
     } 

Je ne sais pas pourquoi tous les tutoriels suggère l'option mutableContainers. Vous n'en avez pas besoin du tout dans Swift lorsque vous utilisez des types de collection natifs.

+1

Pourquoi? C'est ce qu'on appelle la «programmation culte de la cargaison». – gnasher729