私はカードを記述する私のswiftクラス内の構造を持っており、保存時にファイルに書き出されるJSONとして持っていたいと思います。swift error:JSONの書き込みに無効なトップレベルのタイプがあります
私の問題は、NSJSONSerialization中にトップレベルのtypが間違っているというエラーが表示されます。これは正確なエラーです:
NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write
以下は、私の構造体とmyTJSON()関数の名前付きエラーです。
struct CardStructure {
var UUID: NSUUID = NSUUID.init()
var Chapter: Int = 0
var Card: Int = 0
var CorrectAnswers: Int = 0
var WrongAnswers: Int = 0
var Unknown: Int = 0
var LastAsked: String = ""
var Question: String = ""
var Answer: String = ""
var Hint: String = ""
var Tags: [String] = []
var Links: [String] = []
var Picture: String = ""
func toJSON() -> String? {
let props = ["UUID": String(describing: UUID),
"Chapter": Chapter,
"Card": Card,
"Question": Question,
"Answer": Answer,
"Hint": Hint,
"Tags": Tags,
"Links": Links,
"Picture": Picture
] as [String : Any]
do {
let jsonData = try JSONSerialization.data(withJSONObject: props,
options: .prettyPrinted)
return String(data: jsonData, encoding: String.Encoding.utf8)
} catch let error {
print("error converting to json: \(error)")
return nil
}
}
}
このエラーがなぜ発生するのかはわかりません。誰も私を助けることができます???リンクには、このように、提供するソリューションを適応させるために、私は、このエラーに関する他の記事でヒントを理解しようとしましたが、これまでのところ、迅速に私の知識が低すぎる:
invalid-top-level-type-in-json-write
敬具、
クリス
'print(CardStructure().JSON())'は問題なく動作します。問題を示す(最小限の)自己完結型の例を投稿できますか? –
'String(description:UUID)'を 'UUID.uuString'で置き換えてください。 – Moritz