タイトルが不明な場合はお詫び申し上げます。私はNSDictionaryとJSONがどのくらい正確に機能しているかについてはあまりよく分かりません。NSDictionaryで辞書内にネストされた値を取得する方法は?
私は、.JSONファイルから値を取り出し、コンソールに出力するSwiftを使って簡単なアプリケーションを作成しようとしています。ここにJSONファイルがあります:
{
"students": [
{
"name": "Stew Dent",
"age": "10",
"year": 6,
"grades": [
{
"english": "a-plus",
"math": "b-plus"
},
{
"english": "a",
"math": "a-minus"
}
]
},
{
"name": "Mary Brown",
"age": "14",
"year": 10,
"grades": [
{
"english": "a-plus",
"math": "a-plus"
},
{
"english": "a-plus",
"math": "a"
}
]
}
]
}
現在、「グレード」の値を除くすべての値を取得できます。ここに私のスウィフトコードは次のとおりです。
if let path = Bundle.main.path(forResource: "school", ofType: "json")
{
do {
// Retrieve data from JSON file
let jsonData = try NSData(contentsOfFile: path, options: .mappedIfSafe)
// Convert data into NSDictionary
let jsonResult = try JSONSerialization.jsonObject(with: jsonData as Data, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary
if let students : [NSDictionary] = jsonResult?["students"] as? [NSDictionary]
{
if let grades : [NSDictionary] = students["grades"] as? [NSDictionary]
{
for grade: NSDictionary in grades
{
for (subject, gradevalue) in grade
{
print ("\(subject): \(gradevalue)")
}
}
}
}
} catch
{
}
}
私は間違っていないよ場合は、「等級」は「学生」の辞書内の辞書です。ただし、上記のコードを実行できません。 "if let grades ..."行には、 "インデックスタイプが 'String'の添字 '[NSDictionary]'の値を添削することはできません。
私は間違っています?これらの値を取得するためにどのような方法でもありますか?私は何かが足りないのですか?任意の助けいただければ幸いです。おかげで:)
なぜSwift辞書の代わりにNSDictionaryを使用していますか?それについては – rmaddy
@rmaddy idk。私がSwiftを学ぶのに使った本はもともとそれを使っていたので、それが私が学んだものです。スウィフト辞書を使う方が良いですか?違いはなんですか? –