私はSwiftを使い慣れていて、Webページからjsonを解析するアプリケーションを作成しようとしています。しかし、エラーが発生しました "[辞書]の値をサブスクリプトできません"Swift 3の値をサブスクリプトできません。
どうすればこの問題を解決できますか?複数回発生します。以下は私のコードです。ありがとう!
func grabData(results: [Dictionary<String, Any?>]){
guard let resultList = results as? [Dictionary<String, Any?>] else { return }
for iResult in resultList {
var tempResult = SearchResult()
tempResult.studentId = self.getInt(dict: [iResult], string: "StudentId")
tempResult.LastName = self.getString(dict: [iResult], string: "LastName")
tempResult.FirstName = self.getString(dict: [iResult], string: "FirstName")
tempResult.Major = self.getString(dict: [iResult], string: "Major")
tempResult.Year = self.getString(dict: [iResult], string: "Year")
tempResult.GPA = self.getDouble(dict: [iResult], string: "GPA")
self.results.append(tempResult)
}
DispatchQueue.main.async {
self.listTableView.reloadData()
}
}
func getString(dict: [Dictionary<String, Any?>], string: String) -> String? {
if let result = dict[Dictionary<String, Any?>] as? String {
return result
}
return nil
}
func getInt(dict: [Dictionary<String, Any?>], string: String) -> Int? {
if let result = dict[string] as? Int {
return result
}
return nil
}
func getDouble(dict: [Dictionary<String, Any?>], string: String) -> Double? {
if let result = dict[string] as? Double {
return result
}
return nil
}
JSONの解析にライブラリを使用したい場合は、これでかなり簡単になります。https://github.com/borchero/WebParsingで入手できるライブラリを作成しました。 – borchero
スウィフトディクショナリで任意の値の型を宣言しないようにしてください。彼らはあまり意味がありません。 – vadian