2017-08-26 3 views
0

J'ai conservé ces fichiers .plist et .json dans mon projet. Je pourrais lire le fichier .plist de Xcode. Bien que ne pouvait pas lire le fichier .json sur Swift 3.0. J'ai utilisé l'extrait de code ci-dessous pour l'obtenir. mais ne pouvait pas faire ça. Est-il possible d'obtenir les données du fichier .json? veuillez partager vos suggestions.Swift 3.0 - Lire le fichier .JSON du lot XCode

pourrait récupérer le fichier plist

let plistFile = Bundle.main.path(forResource: "content", ofType: "plist") 
let dictPlist = NSDictionary(contentsOfFile: plistFile!) 
print(dictPlist ?? "") 

Impossible de récupérer le fichier JSON

if let filepath = Bundle.main.path(forResource: "fruits", ofType: "json") { 
     do { 
      let contents = try String(contentsOfFile: filepath) 
      print(contents) 
     } catch { 
      print("Fetched") 
     } 
    } else { 
     print("not found") 
    } 
+1

vérifier cette https://stackoverflow.com/questions/45882205/load-json-from-file-with-swift-3/45882685 # 45882685 –

+1

Possible copie de [Charger json à partir du fichier avec swift 3] (https://stackoverflow.com/questions/45882205/load- json-from-file-with-swift-3) –

+0

Charger 'Data' pas' String' (et utiliser l'API liée à l'URL de 'Bundle'). Vous avez besoin de 'Data' de toute façon pour la désérialisation. – vadian

Répondre

0

Swift 4 Solution

Si le filepath a été constaté à juste titre, il pourrait y avoir un problème avec l'encodage de fichier ing. Vous devez explicitement fournir l'encodage réel du fichier json.

Pour vérifier l'encodage de votre fichier, ouvrez le fichier dans Xcode et jeter un oeil à l'inspecteur de fichier à la barre latérale droite:

Encoding of the file

if let filePath = Bundle.main.path(forResource: "data", ofType: "json"), 
    let data = NSData(contentsOfFile: filePath) { 
    do { 

    // here you have your json parsed as string: 
    let jsonString = try? String(contentsOfFile: filePath, encoding: String.Encoding.utf8) 

    // but it is better to use the type data instead: 
    let jsonData = try JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions.allowFragments) 
    } 
    catch { 
    //Handle error 
    } 
}