PagerTabStripView/Example/Shared/Model/PostsFactory.swift

36 lines
811 B
Swift

//
// ModelData.swift
// Example (iOS)
//
// Copyright © 2021 Xmartlabs SRL. All rights reserved.
//
import Foundation
struct PostsFactory {
static let shared = PostsFactory()
var posts: [Post] = load("postsData.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)")
}
}