Json 형태의 데이터를 가져와보자.
생성해야할 파일
1.
myModel.swift
// Animal.swift
struct Animal: Identifiable, Decodable { //Decodable 프로토콜 준수!!
var id: Int
var name: String
var age: Int
var type: String
}
Swift
복사
데이터를 저장할 struct 를 정의한다.
2.
ModelData.swift
// ModelData.swift
var animals: [Animal] = load("animalData.json")
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)")
}
}
Swift
복사
컴파일 하게 되면 animals 변수에 제이슨데이터 파일에서 불러온 어레이가 할당된다.
이때 !! 어레이의 데이터 타입은