上一篇文章我 hard code 了一些數據進去我的專案,
現在要來把這些數據放進 JSON 文件裡,
並將這些接入 app。
let pathString = Bundle.main.path(forResource: "recipes", ofType: "json")
guard pathString != nil else {
return [Recipe]()
}
創建 url 對象:
let url = URL(fileURLWithPath: pathString!)
創建數據對象:
do {
let data = try Data(contentsOf: url)
}
catch {
print(error)
}
解碼:
let decoder = JSONDecoder()
do {
let recipeData = try decoder.decode([Recipe].self, from: data)
}
catch {
print(error)
}
設置 id:
for r in recipeData {
r.id = UUID()
}
return recipeData
會看到 Xcode 顯示一個 error,
因為我們可能創建數據失敗,
所以需要回傳一個空的 Recipe array:
4. 回到 ViewModel 在 init 創建實例獲取數據:
因為我們會反復調用 class DataServise 裡的 function,
所以用 static 修飾這個 function,
使其變成一種靜態方法,不需創建實例就能直接調用。