文字列拡張関数を使用して日付文字列を変換しています。機能は次のとおりです。
func convertDateString() -> String {
let dateFormater = DateFormatter()
var returnString = ""
dateFormater.dateFormat = "yyyy-MM-dd'T'hh:mm:ss'Z'" // Takes the format from the JSON journal entry for elite dangerous
dateFormater.locale = Locale.current
if let dateObj = dateFormater.date(from: self) {
dateFormater.dateFormat = "dd MMM yyyy hh:mm:ss" // Converts it to a new string (as a date object)
returnString = dateFormater.string(from: dateObj) // Converts the date object back to a string
} else {
returnString = "Error converting date"
}
return returnString
}
JSON参照ファイルからの結果の一部を変換するために、文字列拡張子を呼び出す一連のJSONオブジェクトであるデータセットを使用しています。
MACPRO と MacBookAir の 2 台のマシンで作業しています。どちらも同じバージョンの MacOS (10.12.5) と同じバージョンの Xcode を実行しています。
MACPRO でアプリを実行すると、問題なく JSON オブジェクト ファイルが解析され、上記の関数で期待どおりにすべての日付が正しく変換されます。ただし、MacBookAir でまったく同じデータファイルでアプリを実行すると、JSON オブジェクト ファイルは問題なく解析されているように見えますが、日付の一部 (数パーセント) が期待どおりに変換されません。if let dateObj = dateFormater.date(from: self)
ステートメントに失敗し、 「日付の変換エラー」として返されます。
私は何が起こっているのかを理解するのに途方に暮れています。を削除してみdateFormater.locale = Locale.current
ましたが、違いはありません。
同じ JSON オブジェクトがエラーを生成します (つまり、ファイルを実行するたびに、「日付の変換エラー」応答を生成するのは同じ JSON オブジェクトです)。JSON オブジェクト ファイルをテキスト エディターで見ると、JSON オブジェクトに問題はないように見えます (オンラインの JSON オブジェクト フォーマッターでも確認したところ、JSON オブジェクトが正しく読み取られます)。
また、SwiftyJSON を使用して JSON オブジェクトを解析していることも付け加えておきます。
感謝して受け取った助けや提案。
コードをより堅牢にする方法はありますか? アプリのデータファイル、Xcode、およびMacOSがすべて同じであることを考えると、異なるマシンが違いを生む理由を誰かが示唆できますか。