2017-08-26 17 views
0

私はこれらの.plistファイルと.jsonファイルをプロジェクトに保存しました。 Xcodeから.plistファイルを読むことができました。 Swift 3.0では.jsonファイルを読み取ることができませんでした。私はこれを得るために以下のコードスニペットを使用しました。しかしそれはできませんでした。 .jsonファイルからデータを取得することは可能ですか? あなたの提案を親切にお伝えください。Swift 3.0 - XCodeバンドルから.JSONファイルを読み込みます。

は、ファイルパスが正常に見つかった場合はplistファイル

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

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

チェックこのhttps://stackoverflow.com/questions/45882205/load-json-from-swift-3/45882685#45882685 –

+1

[swift 3のファイルからjsonをロード]の可能な複製(https://stackoverflow.com/questions/45882205/load- json-from-file-with-swift-3) –

+0

'String'ではなく' Data'をロードします(そして 'Bundle'のURL関連APIを使用します)。いずれにせよ、デシリアライズのためには 'Data'が必要です。 – vadian

答えて

0

スウィフト4ソリューション

をJSONファイルを取得できませんでしたフェッチでしたファイルエンコードに問題がある可能性がありますing。 jsonファイルの実際のエンコーディングを明示的に指定する必要があります。

、あなたのファイルのエンコーディングをチェックXcodeでファイルを開き、右サイドバーのファイルインスペクタを見てみました:

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 
    } 
} 
関連する問題