【发布时间】:2021-03-15 01:40:28
【问题描述】:
我目前正在学习 Landmarks 应用教程,我正在学习将 JSON 加载到 Struct 中的部分。他们给出了以下代码。
参考:https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation
import Foundation
func load<T: Decodable>(_ filename: String) -> T {
let data: Data
guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
else {
fatalError("Couldn't find \(filename) in main bundle.")
}
do {
data = try Data(contentsOf: file)
} catch {
fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
}
do {
let decoder = JSONDecoder()
return try decoder.decode(T.self, from: data)
} catch {
fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
}
}
我特别不理解函数开头的T.self 引用和<T: Decodable>。有人可以分解功能吗?谢谢。
【问题讨论】:
-
你知道
String.self或Int.self或SomeType.self是什么意思吗? -
我知道
self指的是有问题的对象本身,但我并不完全清楚 -
没有。
String.self表示字符串本身,类型。 -
嗯,有道理
标签: swift