2017-06-11 16 views
0

ちょっと私のアプリケーションにプリセットデータ用のJSONがあります。通常、私はこのようにデータをロード:JSONの読み込みに失敗しましたSwift 3

 if let path = Bundle.main.path(forResource: "document", ofType: "json") 

    { 

     let jsonData = try NSData(contentsOfFile: path, options: NSData.ReadingOptions.mappedIfSafe) 
    ... } 

しかし、私はこのようdocument.jsonファイルをローカライズした後:

enter image description here

何もデータがロードされません。 誰かがローカライズされたデータを取得する方法を知っていますか?

答えて

1

ローカライゼーションのため、ローカライズされたファイルは、Resourcesフォルダではなくlprojフォルダにあります。

解決方法は、サポートされている言語で配列を作成し、現在のロケールから現在の言語を取得することです。現在の言語がサポートされている言語と一致しない場合は、デフォルト言語に戻ります。

let supportedLocalizations = ["en", "de"] 

let currentLanguage : String 
if let locale = Locale.current.languageCode, supportedLocalizations.contains(locale) { 
    currentLanguage = locale 
} else { 
    currentLanguage = Bundle.main.object(forInfoDictionaryKey: "CFBundleDevelopmentRegion") as! String 
} 
let url = Bundle.main.url(forResource: "document", withExtension: "json", subdirectory: nil, localization: currentLanguage)! 
let jsonData = try! Data(contentsOf: url) 

強制的にアンラップされた部分がクラッシュした場合、設計エラーが発生します。すべてのファイルは実行時に存在するはずです。

関連する問題